Sapere l'ordine dei byte utilizzato dal sistema per salvare i dati
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