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 per gestire il file contenente i byte del numero disposti in ''Big-Endian'';
+
* "''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.