Differenze tra le versioni di "Ottenere un numero dalla sua memorizzazione in formato Big-Endian"
Da Gambas-it.org - Wikipedia.
Riga 45: | Riga 45: | ||
'''End''' | '''End''' | ||
Laddove: | Laddove: | ||
− | * ''fl'' è la variabile | + | * "''fl''" è la variabile del file contenente i byte del numero disposti in ''Big-Endian''; |
− | * ''b'' è la variabile contenente la quantità (2, 4 oppure 8) di byte, disposti in ''Big-Endian'', che costituiscono il numero e quindi che devono essere letti; | + | * "''b''" è la variabile contenente la quantità (2, 4 oppure 8) di byte, disposti in ''Big-Endian'', che costituiscono il numero e quindi che devono essere letti; |
− | * ''c'' è la variabile che contiene il valore del singolo byte letto dal file; | + | * "''c''" è la variabile che contiene il valore del singolo byte letto dal file; |
− | * ''j'' è la variabile contenente il risultato. | + | * "''j''" è la variabile contenente il risultato. |
Versione delle 01:38, 12 giu 2015
Il caso è quello in cui si intende convertire i dati di un valore, memorizzati in formato Big-Endian all'interno di un file o di un vettore di tipo Byte[], ottenendo così al termine l'effettivo numero corrispondente.
Porremo come esempio un vettore di tipo Byte[] di tre elementi contenente i seguenti valori: &FF, &FF, &FF. Per ottenere il corrispondente numero potremo utilizzare due modalità:
Public Sub Main() Dim bb As Byte[] = [&FF, &FF, &FF] Print ((bb[0] Or ((bb[1] * CInt(2 ^ 8)))) Or ((bb[1] * CInt(2 ^ 16)))) End
oppure:
Public Sub Main() Dim q As Byte Dim bb As Byte[] = [&FF, &FF, &FF] Dim ris As Integer Do ris = (ris * CInt(2 ^ 8)) Or bb[q] Inc q Loop Until q = 3 Print ris End
Facendo l'esempio con una lettura dei dati in Big-Endian da un file:
Private Function Legge_Big_Endian(fl As File, b As Byte) As Integer Dim c As Byte Dim j As Integer Do Read #fl, c j = (j * CInt(2 ^ 8)) Or c Dec b Loop Until b = 0 Return j End
Laddove:
- "fl" è la variabile del file contenente i byte del numero disposti in Big-Endian;
- "b" è la variabile contenente la quantità (2, 4 oppure 8) di byte, disposti in Big-Endian, che costituiscono il numero e quindi che devono essere letti;
- "c" è la variabile che contiene il valore del singolo byte letto dal file;
- "j" è la variabile contenente il risultato.