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 == 0 then
   Print "Lettura Little-Endian"
 Else
   Print "Lettura Big-Endian"
 Endif

End


Leggendo da un flusso di dati

Quest'altro modo prevede che si scriva in un flusso di dati (File o Stream) il valore 1 contenuto in una variabile di tipo Short, e che pertanto in esadecimale è rappresentato da due byte: 00 01. Da detto flusso di dati si leggerà, quindi, il primo byte salvato.
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 p As Pointer
 Dim c As Short = 1
 Dim st As Stream
 Dim b As Byte

 p = VarPtr(c)
 st = Memory p For Read
 Read #st, b

 If b = 1 Then
   Print "Lettura Little-Endian"
 Else
   Print "Lettura Big-Endian"
 Endif
 
 st.Close

End