Sapere l'ordine dei byte utilizzato dal sistema per salvare i dati

Da Gambas-it.org - Wikipedia.

Per sapere se il proprio sistema adotta la modalità Big-Endian o la modalità Little-Endian per salvare i dati in un file, è possibile utilizzare almeno due modi:

Uso della proprietà System.ByteOrder

Gambas mette a disposizione la specifica Proprietà ".ByteOrder" della Classe System per conoscere l'ordine dei byte.

Esempio:

Public Sub Main()

 If System.ByteOrder == gb.LittleEndian then
   Print "Lettura Little-Endian"
 Else
   Print "Lettura Big-Endian"
 Endif

End


Usando un Puntatore a una variabile di tipo Short

Quest'altro modo prevede che si ottenga un Puntatore da una variabile di tipo Short, che sia stata inizializzata con il valore numerico 1.
Va ricordato che tale valore di tipo Short è rappresentato in esadecimale da due byte: 00 01.
Si provvederà a dereferenziare il predetto Puntatore con l'apposita funzione "Byte@()", al fine di leggere soltanto il primo byte-dato del valore numerico "1", come immagazzinato in memoria.
Se il valore restituito è uguale a zero, allora l'ordine dei byte in cui vengono salvati i dati, sarà del tipo Big-Endian; se il valore è uguale a 1 allora l'ordine dei byte sarà di tipo Little-Endian.

Un possibile codice è il seguente:

Public Sub Main()

 Dim c As Short = 1
 Dim p As Pointer

 p = VarPtr(c)

 If Byte@(p) == 1 Then
   Print "Lettura Little-Endian"
 Else
   Print "Lettura Big-Endian"
 Endif

End