# 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