# Byte Order and Byte Swapping '''Include File(s):''' [http://hg.libsdl.org/SDL/file/default/include/SDL_endian.h SDL_endian.h] ## Introduction This category contains functions for handling endian-specific values. Simple data types like integers and floats consist of several bytes. A 32bit integer (Sint32), for example, uses four bytes (as each byte has 8 bits). Endianness describes how the system orders the bytes of this value in memory. Endianness comes in two forms - big and little. * SDL_LIL_ENDIAN means byte order is 1234, where the least significant byte is stored first * SDL_BIG_ENDIAN means byte order is 4321, where the most significant byte is stored first ''Example:'' Imagine the 32bit integer number ```16,909,060``` in decimal. In hexadecimal that would be ~+```0x01020304```+~.
```0x01``` is the most significant byte (the one that increases the value the most. {{{0x04}}} is the least significant byte (as it increases the value the least).
When that is stored in memory on a little-endian system they are stored with the least significant byte first, producing the byte stream: ```0x04 0x03 0x02 0x01```
When that is stored in memory on a big-endian system they are stored with the most significant byte first, producing the byte stream: ```0x01 0x02 0x03 0x04```
For further information about endianness read the [https://en.wikipedia.org/wiki/Endianness Wikipedia] article on the subject. SDL_BYTEORDER is a macro that corresponds to the byte order used by the processor type it was compiled for. * SDL_BYTEORDER is SDL_LIL_ENDIAN for x86, x64, and similar systems that use the little endian byte order. * SDL_BYTEORDER is SDL_BIG_ENDIAN for PowerPC and similar systems that use the big endian byte order. ## Functions <> - [SDL_Swap16](SDL_Swap16) - [SDL_Swap32](SDL_Swap32) - [SDL_Swap64](SDL_Swap64) - [SDL_SwapBE16](SDL_SwapBE16) - [SDL_SwapBE32](SDL_SwapBE32) - [SDL_SwapBE64](SDL_SwapBE64) - [SDL_SwapFloat](SDL_SwapFloat) - [SDL_SwapFloatBE](SDL_SwapFloatBE) - [SDL_SwapFloatLE](SDL_SwapFloatLE) - [SDL_SwapLE16](SDL_SwapLE16) - [SDL_SwapLE32](SDL_SwapLE32) - [SDL_SwapLE64](SDL_SwapLE64) ---- CategoryCategory