Detecting the byte order (endian) of a system.
Posted: Wed Mar 07, 2018 8:32 pm
Hi there,
I've seen some code in the forums that utilises 'CompilerIf #PB_Compiler_OS = ...' statements to let a program know what endian format a system is using. I decided however that I wanted to write this little function that tests what endian format is being used. Maybe someone will find it useful.
Kind regards,
Francis
I've seen some code in the forums that utilises 'CompilerIf #PB_Compiler_OS = ...' statements to let a program know what endian format a system is using. I decided however that I wanted to write this little function that tests what endian format is being used. Maybe someone will find it useful.
Code: Select all
Enumeration
#LITTLE_ENDIAN
#BIG_ENDIAN
EndEnumeration
Procedure ByteOrder()
Protected test.w = 1
If PeekB(@test)
ProcedureReturn #LITTLE_ENDIAN
Else
ProcedureReturn #BIG_ENDIAN
EndIf
EndProcedure
CompilerIf #PB_Compiler_IsMainFile
Select ByteOrder()
Case #LITTLE_ENDIAN
MessageRequester("ByteOrder()", "Little-endian (Intel) byte order detected.")
Case #BIG_ENDIAN
MessageRequester("ByteOrder()", "Big-endian (Motorola) byte order detected.")
EndSelect
CompilerEndIf
Francis