Distinguere ogni byte della rappresentazione esadecimale di un valore decimale
Vai alla navigazione
Vai alla ricerca
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 ' Il valore decimale usato in questo esempio: 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
' Il valore decimale usato in questo esempio:
i = 123456
p = VarPtr(i)
For c = 3 To 0 Step -1
Print Hex(Byte@(p + c), 2);;
Next
End
Uso di un Vettore
Public Sub Main() Dim i As Integer Dim b As Byte Dim bb As New Byte[] ' Il valore decimale usato in questo esempio: i = 123456 For b = 0 To 3 bb.Push(Byte@(VarPtr(i) + b)) Next ' Verifica il risultato: For c As Short = 3 To 0 Step -1 Print c Print Hex(bb[c], 2)';; Next End
Note
[1] Durante la scrittura del valore in memoria, con riferimento alla quantità di byte comunque da occupare, viene tenuto conto ovviamente anche del "tipo " di valore dichiarato.