Differenze tra le versioni di "Ottenere un numero dalla sua memorizzazione in formato Big-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 Big-Endian all'interno di un file o di un vettore di tipo Byte[], ottenendo così al...') |
|||
Riga 27: | Riga 27: | ||
'''End''' | '''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 per gestire il 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. |
Versione delle 01:37, 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 per gestire il 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.