Bonjour,
la fonction hex() permet de convertir uniquement les nombres de 32 bit, avez vous une méthode pour convertir un nombre de 64 bits en hexa ?
Par avance, merci
[R] Convertion d'un nombre 64 bit en hexadecimal
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Convertion d'un nombre 64 bit en hexadecimal
Modifié en dernier par kalixe le dim. 17 oct. 2010 21:48, modifié 1 fois.
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Convertion d'un nombre 64 bit en hexadecimal
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Convertion d'un nombre 64 bit en hexadecimal
Heu non tlem :s
je ne souhaite pas faire de l'encodae en base64, je souhaite convertir un nombre entier décimal en hexadecimal, comme lorsque tu prends ta calculatrice en affichage programmeur et tu peux convertir d'un clique n'importe quel nombre, vu que la focntion Hex() ne peut remplir se rôle il doit y avoir une autre méthode ?
je ne souhaite pas faire de l'encodae en base64, je souhaite convertir un nombre entier décimal en hexadecimal, comme lorsque tu prends ta calculatrice en affichage programmeur et tu peux convertir d'un clique n'importe quel nombre, vu que la focntion Hex() ne peut remplir se rôle il doit y avoir une autre méthode ?
Re: [..] Convertion d'un nombre 64 bit en hexadecimal
Bonjour
Si j ai bien suivi, tu as un grand nombre décimal a transformer en hexa ...
je te donne ceci, petit code perso, qui date un peu, a regarder avant d'éxécuter donc ..
c'est surement pas le code le plus performant pour un changement de base, notamment du au sens d'écriture en base 16 ( droite a gauche, ou gauche a droite ), mais ça devrait faire l affaire ...
Si j ai bien suivi, tu as un grand nombre décimal a transformer en hexa ...
je te donne ceci, petit code perso, qui date un peu, a regarder avant d'éxécuter donc ..
Code : Tout sélectionner
[spoiler=]
#Include <string.au3>
func Base16($n)
Switch $n
Case 0 to 9
$retour = String($n)
Case 10
$retour = "a"
Case 11
$retour = "b"
Case 12
$retour = "c"
Case 13
$retour = "d"
Case 14
$retour = "e"
Case 15
$retour = "f"
EndSwitch
Return $retour
EndFunc
Func Longeur($n)
Return 1 + Floor(log($n)/log(16))
EndFunc
Func Decto16($m)
$n = $m
$Longueur = Longeur($n)
$16 = ""
$Longueur = $Longueur - 1
$p = floor($m / ( 16 ^ $Longueur ))
$pstring = Base16($p)
$16 = $pstring
$m = $m - ( $p * (16 ^ $Longueur))
$i = 0
while $Longueur > 0
$Longueur = $Longueur - 1
$i = $i + 1
$p = floor($m / ( 16 ^ $Longueur ))
$pstring = Base16($p)
$16 = _StringInsert($16,$pstring,$i)
$m = $m - ( $p * (16 ^ $Longueur))
WEnd
Return $16
EndFunc
[/spoiler]
Re: [..] Convertion d'un nombre 64 bit en hexadecimal
Merci mais ca ne donne pas le bon résultat et lorsque c'est un entier négatif il ne sait pas le traiter, il me renvoi rien 
Re: [..] Convertion d'un nombre 64 bit en hexadecimal
Il ne donne pas le bon résultat ... Exact, si tu passes les limites de stockage de autoit en matière de nombre entier. Dans ce cas la, faut que tu changes de manière de stocker les nombres. Un exemple de ce que tu met en entré sera surement un plus pour t'aider ... Quand aux nombres négatifs, effectivement, il ne sait pas les traiter ... a toi d'adapter 
Re: [R] Convertion d'un nombre 64 bit en hexadecimal
C'est bon j'ai fini par trouver (avec bcp de temps) :
Convertion de du decimal à l'hexa et de l'hexa au decimal
Convertion de du decimal à l'hexa et de l'hexa au decimal
Code : Tout sélectionner
Global $tHEX_64 = DllStructCreate('int64')
Global $tHEX_32 = DllStructCreate('int;int', DllStructGetPtr($tHEX_64))
Global $tHEX_00 = DllStructCreate('byte[8]', DllStructGetPtr($tHEX_64))
Func Dec2Hex($nVal) ;; ! output: Full 8 Byte Hex-string without leading '0x'.
If Not IsNumber($nVal) Then Return SetError(1, 0, '')
;; If IsFloat($nVal) Then Return '80000000' ;; == Hex() behavior.
;; If IsFloat($nVal) Then $nVal = Floor($nVal) ;; == Current default behavior.
;
DllStructSetData($tHEX_64, 1, $nVal)
Return Hex(DllStructGetData($tHEX_32, 2)) & Hex(DllStructGetData($tHEX_32, 1))
EndFunc
Func Hex2Dec($sHex) ;; ! Input: Full 8 Byte Hex-string without leading '0x'.
If Not IsString($sHex) Then Return SetError(1, 0, '')
If StringLen($sHex) <> 16 Then Return SetError(2, 0, '')
If StringRegExp($sHex, '(?i)[^\dABCDEF]') Then Return SetError(3, 0, '')
;
DllStructSetData($tHEX_00, 1, Binary('0x' & $sHex))
$sHex = Hex(DllStructGetData($tHEX_32, 2)) & Hex(DllStructGetData($tHEX_32, 1))
DllStructSetData($tHEX_00, 1, Binary('0x' & $sHex))
Return DllStructGetData($tHEX_64, 1)
EndFunc

