[R] limitation calcul hexa

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
r140
Niveau 2
Niveau 2
Messages : 28
Enregistré le : sam. 27 oct. 2007 15:31
Status : Hors ligne

[R] limitation calcul hexa

#1

Message 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
 
Modifié en dernier par r140 le jeu. 11 déc. 2008 20:53, modifié 3 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: limitation calcul hexa

#2

Message 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.
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é".
r140
Niveau 2
Niveau 2
Messages : 28
Enregistré le : sam. 27 oct. 2007 15:31
Status : Hors ligne

Re: [..] limitation calcul hexa

#3

Message par r140 »

reBonjour,

J'ai fait les modifications...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] limitation calcul hexa

#4

Message 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.
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é".
Avatar du membre
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: [..] limitation calcul hexa

#5

Message par moutelous »

Bonjour,

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

A+
A+
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] limitation calcul hexa

#6

Message 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.
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é".
r140
Niveau 2
Niveau 2
Messages : 28
Enregistré le : sam. 27 oct. 2007 15:31
Status : Hors ligne

Re: [..] limitation calcul hexa

#7

Message 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
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] limitation calcul hexa

#8

Message 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 ?
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é".
r140
Niveau 2
Niveau 2
Messages : 28
Enregistré le : sam. 27 oct. 2007 15:31
Status : Hors ligne

Re: [..] limitation calcul hexa

#9

Message 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
Avatar du membre
AlbatorV
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 05 nov. 2008 11:38
Status : Hors ligne

Re: [..] limitation calcul hexa

#10

Message par AlbatorV »

r140
Niveau 2
Niveau 2
Messages : 28
Enregistré le : sam. 27 oct. 2007 15:31
Status : Hors ligne

Re: [..] limitation calcul hexa

#11

Message 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.
@+
Répondre