Page 1 sur 1

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

Posté : lun. 11 janv. 2021 14:14
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)

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

Posté : lun. 11 janv. 2021 17:20
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)

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

Posté : ven. 26 mars 2021 10:42
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:

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

Posté : ven. 26 mars 2021 11:08
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