Page 1 sur 1

[R] limitation calcul hexa

Posté : dim. 07 déc. 2008 13:44
par r140
Bonjour,

J'ai remarqué dans le calcul héxadécimale se bloquait à partir d'un certain nombre.
j'ai donc crée une chaîne permettant de convertir de l'hexa en décimal.
Je veux ensuite pouvoir lire des données dans la base de registre de type hexa
et les convertir en décimal afin de les interpréter.

Ma question est peut 'on convertir une chaîne hexadécimal supérieur à 16 caractères en décimal sans provoquer des erreurs de calculs du type 5.03...e22,comme dans cette exemple
Merci

Code : Tout sélectionner

#Include<Array.au3>
dim $array[16]
local $hex
$Array[0]=0  
$Array[1]=1  
$Array[2]=2  
$Array[3]=3  
$Array[4]=4  
$Array[5]=5  
$Array[6]=6  
$Array[7]=7  
$Array[8]=8  
$Array[9]=9  
$Array[10]="A"
$Array[11]="B"
$Array[12]="C"
$Array[13]="D"
$Array[14]="E"
$Array[15]="F"

$hex="AAAAAAAAAAEEEEEFFAA"

$nhex=StringLen($hex)
$nh=$nhex-1
Local $conv,$result,$digit,$n
$n=1
$digit=""
For $i=$nhex-1 To 0 step -1
$int2=StringMid($hex,$n,1)
conv($int2)
$result=$result+$digit*16^$nh
$n=$n+1
$nh=$nh-1
Next

MsgBox(0,"decT",$result)

func conv($int2)
$digit = _ArraySearch ($Array, $Int2, 0, 0, 0, True)
return $digit
EndFunc
 

Re: limitation calcul hexa

Posté : dim. 07 déc. 2008 22:49
par Tlem
Merci de respecter les règles de présentation d'un message dont voici le lien : http://www.autoitscript.fr/forum/viewto ... f=35&t=595.

Profitez en pour revoir votre question qui n'est pas claire du tout.
En plus, "AAAAAAAAAABBRREEFFAA" ne peut être un nombre hexadécimal car R n'est pas un nombre hexa.

Re: [..] limitation calcul hexa

Posté : lun. 08 déc. 2008 13:04
par r140
reBonjour,

J'ai fait les modifications...

Re: [..] limitation calcul hexa

Posté : lun. 08 déc. 2008 21:28
par Tlem
r140 a écrit :Ma question est peut 'on convertir une chaîne hexadécimal supérieur à 16 caractères en décimal sans provoquer des erreurs de calculs du type 5.03...e22,comme dans cette exemple
Si votre chaine est un nombre ceci devrait convenir.

Code : Tout sélectionner

; Calcul manuel.  ;)
$Dec = 10^18 + 10^17 + 10^16 + 10^15 + 10^14 + 10^13 + 10^12 + 10^11 + 10^10 + 10^9 + 14^8 + 14^7 + 14^6 + 14^5 + 14^4 + 16^3 + 16^2 + 10^1 + 10^0
MsgBox(0,"",$Dec)

; Calcul Auto.
Dim $hex = "AAAAAAAAAAEEEEEFFAA"
Dim $Res, $Cpt = 0
For $i = StringLen($hex) to 1  Step -1
    $Res += Dec(StringMid($hex, $i, 1))^$Cpt
    $Cpt +=1
Next
MsgBox(0,"",$Res)
Si votre chaine est du texte alors la conversion devra ce faire différemment.

Re: [..] limitation calcul hexa

Posté : lun. 08 déc. 2008 21:34
par moutelous
Bonjour,

Ta solution Tlem donne toujours une valeur au format scientifique ... et c'est justement à quoi veut échapper "r140" ....

A+

Re: [..] limitation calcul hexa

Posté : lun. 08 déc. 2008 23:33
par Tlem
Heuuu je ne suis pas sur de ce qu'il à demandé ...
En fait il parle d'une erreur de calcul (ce qui est le cas dans son exemple) car "AAAAAAAAAAEEEEEFFAA" convertit en decimal ne donne pas 5.03...e22 mais 1.11...e18.

Après effectivement, il peut y avoir un problème de précision.
Mais ceci est bien indiqué ici, 15 digits max.

Re: [..] limitation calcul hexa

Posté : mar. 09 déc. 2008 17:04
par r140
Bonsoir,

Merci de vos réponses
Exist'il une astuce pour convertir les données hexa de la base de registre en décimal supérieur à 15 chiffres?
Merci

Re: [..] limitation calcul hexa

Posté : mar. 09 déc. 2008 21:26
par Tlem
Vos données sont elles un nombre écrit en hexa que vous voulez convertir en decimale ?
ou
Une chaine de caractère codée en hexa ?

Si c'est la première solution, est-il indiscret de savoir pourquoi vous ne pouvez travailler sur le nombre hexa ?

Re: [..] limitation calcul hexa

Posté : jeu. 11 déc. 2008 17:41
par r140
Bonjour,

C'est pour retrouver la clé d'intallation de windows xp lorsque l'on a perdu la clé correspondante, ou la possibité de recopier celle ci sans faire de confusion (B et 8)
La clé à convertir se trouve dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductID
Et la clé se nome DigitalProductID.

Merci

Re: [..] limitation calcul hexa

Posté : jeu. 11 déc. 2008 17:47
par AlbatorV

Re: [..] limitation calcul hexa

Posté : jeu. 11 déc. 2008 20:52
par r140
Bonsoir,

Merci pour cet exemple, mais je trouve qu'on apprends plus, en réalisant les choses soit même... ;-)
Je peux considérer cette demande comme résolu.
@+