Differenze tra le versioni di "Ottenere un numero dalla sua memorizzazione in formato Little-Endian"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "Il caso è quello in cui si intende convertire i dati di un valore, memorizzati in formato ''Little-Endian'' all'interno di un vettore di tipo ''Byte[ ]'', ottenendo così al...") |
|||
Riga 25: | Riga 25: | ||
i += bb[2] * 65536 <FONT Color=gray>' ''&010000''</font> | i += bb[2] * 65536 <FONT Color=gray>' ''&010000''</font> | ||
i += bb[3] * 16777216 <FONT Color=gray>' ''&01000000''</font> | i += bb[3] * 16777216 <FONT Color=gray>' ''&01000000''</font> | ||
+ | |||
+ | Print i | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | |||
+ | '''Public''' Sub Main() | ||
+ | |||
+ | Dim bb As Byte[] = [&04, &03, &02, &01] | ||
+ | Dim i As Integer | ||
+ | |||
+ | i = (bb[0] Or ((bb[1] * CInt(2 ^ 8)))) Or (bb[2] * CInt(2 ^ 16)) Or (bb[3] * CInt(2 ^ 24)) | ||
Print i | Print i | ||
'''End''' | '''End''' |
Versione delle 07:16, 21 feb 2016
Il caso è quello in cui si intende convertire i dati di un valore, memorizzati in formato Little-Endian all'interno di un vettore di tipo Byte[ ], ottenendo così al termine l'effettivo e reale numero corrispondente.
Porremo come esempio un vettore di tipo Byte[ ] di quattro elementi, contenente i seguenti valori: &04, &03, &02 e &01, che rappresentano in formato Little-Endian il numero decimale: 16909060. Per ottenere detto numero, potremo utilizzare alcune modalità:
Public Sub Main() Dim bb As Byte[] = [&04, &03, &02, &01] Dim i As Integer i = Int@(bb.Data) Print i End
oppure:
Public Sub Main() Dim bb As Byte[] = [&04, &03, &02, &01] Dim i As Integer i = bb[0] i += bb[1] * 256 ' &0100 i += bb[2] * 65536 ' &010000 i += bb[3] * 16777216 ' &01000000 Print i End
Public Sub Main() Dim bb As Byte[] = [&04, &03, &02, &01] Dim i As Integer i = (bb[0] Or ((bb[1] * CInt(2 ^ 8)))) Or (bb[2] * CInt(2 ^ 16)) Or (bb[3] * CInt(2 ^ 24)) Print i End