Distinguere ogni byte della rappresentazione esadecimale di un valore decimale
Da Gambas-it.org - Wikipedia.
Ogni valore numerico può essere rappresentato in varie modalità (decimale, esadecimale, ottale, etc). Quando un numero viene salvato in memoria, vengono scritti in ciascuna cella i singoli valori che insieme costituiscono il valore numerico salvato. [Nota 1]
Così, se ad esempio il valore decimale iniziale è 123456, i singoli byte della corrispondente sua rappresentazione esadecimale sono 00|01|E2|40:
Indice | singolo byte | |
[0] | <- | 00 |
[1] | <- | 01 |
[2] | <- | E2 |
[3] | <- | 40 |
Per conoscere i singoli byte esadecimali che compongono un numero, è possibile adottare alcune modalità.
Uso della funzione Shr( )
Public Sub Main() Dim i As Integer i = 123456 Print Hex(Shr(i And &FF000000&, 24), 2);; Print Hex(Shr(i And &FF0000&, 16), 2);; Print Hex(Shr(i And &FF00&, 8), 2);; Print Hex(i And &FF, 2) End
Uso di un Puntatore
Public Sub Main() Dim c, i As Integer Dim p As Pointer i = 123456 p = VarPtr(i) For c = 3 To 0 Step -1 Print Hex(Byte@(p + c), 2);; Next End
Note
[1] Durante la scrittura del valore in memoria, con riferimento alla quantità di byte comunqueda occupare, viene tenuto conto ovviamente anche del "tipo" di valore dichiarato.