Differenze tra le versioni di "Distinguere ogni byte della rappresentazione esadecimale di un valore decimale"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
− | Ogni valore numerico può essere rappresentato in varie modalità (decimale, esadecimale, ottale, etc). | + | 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. <SUP>[[[#Note|Nota 1]]]</sup> |
Così, se ad esempio il valore decimale iniziale è ''123456'', i singoli byte della corrispondente sua rappresentazione esadecimale sono ''00|01|E2|40'': | Così, se ad esempio il valore decimale iniziale è ''123456'', i singoli byte della corrispondente sua rappresentazione esadecimale sono ''00|01|E2|40'': | ||
Riga 43: | Riga 43: | ||
'''End''' | '''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. |
Versione attuale delle 03:03, 30 mag 2017
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.