Ottenere un numero dalla sua memorizzazione in formato Little-Endian
Da Gambas-it.org - Wikipedia.
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
o anche:
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