Differenze tra le versioni di "Ottenere un numero dalla sua memorizzazione in formato Little-Endian"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
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. | 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à: | 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à: | ||
Riga 8: | Riga 7: | ||
Dim i As Integer | Dim i As Integer | ||
− | + | i = Int@(bb.Data) | |
− | + | Print i | |
'''End''' | '''End''' | ||
− | |||
− | |||
oppure: | oppure: | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
Riga 21: | Riga 18: | ||
Dim i As Integer | Dim i As Integer | ||
− | + | i = bb[0] | |
− | + | i += bb[1] * 256 <FONT Color=gray>' ''&0100''</font> | |
− | + | i += bb[2] * 65536 <FONT Color=gray>' ''&010000''</font> | |
− | + | i += bb[3] * 16777216 <FONT Color=gray>' ''&01000000''</font> | |
− | + | Print i | |
'''End''' | '''End''' | ||
− | + | o anche: | |
− | |||
− | |||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
Riga 37: | Riga 32: | ||
Dim i As Integer | 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''' | '''End''' |
Versione attuale delle 15:20, 21 ott 2021
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