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:

Indicesingolo 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.