[R] Convention de nommage et utilisation de valeur hexadécimale

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

[R] Convention de nommage et utilisation de valeur hexadécimale

#1

Message par jpascal »

Bonjour,

On peut définir une variable avec une valeur hexadécimale.
$Var = 0x0A0B0C
On n'utilise pas de simple ou double quote comme pour une chaîne de caractères.
Faut-il donc utiliser le préfixe $sVar comme pour une "string" ou $dVar ou autre ?
Best Practices : https://www.autoitscript.com/wiki/Best_coding_practices

Je ne comprends pas comment passer de "0x0A0B0C" à 0x0A0B0C.
Local $sVar = '0x0A0B0C'
Local $dVar = 0x0A0B0C
ConsoleWrite(StringTrimLeft(Hex($dVar), 2) & ' = ' & StringTrimLeft($sVar, 2) & @CRLF)
;~ Passage de  "0x0A0B0C" à 0x0A0B0C ?
ConsoleWrite(Binary("0x0A0B0C") & ' <> ' & $dVar & @CRLF)
Modifié en dernier par jpascal le ven. 26 mars 2021 10:42, modifié 1 fois.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Convention de nommage et utilisation de valeur hexadécimale  

#2

Message par jchd »

Une valeur hexa, comme 0x0A0B0C, est une simple représentation en base 16 d'un entier, donc sur 16 ou 32 bits.
"0x0A0B0C" est une chaîne ; Binary($sVar) est une valeur de type "binaire" et correspond à la représentation hexa telle qu'elle est stockée en mémoire.

Code : Tout sélectionner

Local $sVar = '0x0A0B0C'
Local $dVar = 0x0A0B0C

ConsoleWrite("$sVar :                   " & @TAB & $sVar & @TAB & VarGetType($sVar) & @LF)
ConsoleWrite("Binary($sVar) :           " & @TAB & Binary($sVar) & @TAB & VarGetType(Binary($sVar)) & @LF)
ConsoleWrite("Int(Binary($sVar)) :      " & @TAB & Int(Binary($sVar)) & @TAB & VarGetType(Int(Binary($sVar))) & @LF & @LF)
ConsoleWrite("$dVar :                   " & @TAB & $dVar & @TAB & VarGetType($dVar) & @LF)
ConsoleWrite("Binary($dVar) :           " & @TAB & Binary($dVar) & @TAB & VarGetType(Binary($dVar)) & @LF)
ConsoleWrite("Int(Binary('0x0C0B0A00')) :" & @TAB & Int(Binary('0x0C0B0A00')) & @TAB & VarGetType(Int(Binary('0x0C0B0A00'))) & @LF)
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [..] Convention de nommage et utilisation de valeur hexadécimale

#3

Message par jpascal »

Bonjour jchd.

Merci avec un peu de retard pour cette explication et ces exemples. :-)

J'ai encore du mal à comprendre pourquoi si $dVar = 0x0A0B0C alors Binary($dVar) = 0x0C0B0A00 mais je vais essayer de le retenir à l'avenir. :roll:
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Convention de nommage et utilisation de valeur hexadécimale

#4

Message par jchd »

L'explication est simple : les processeurs sont taquins et ne stockent pas en mémoire les valeurs sous la même forme que nous les manipulons, en particulier les entiers.
Voir tout le détails des cas rencontrés : https://fr.wikipedia.org/wiki/Boutisme
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Répondre