Endian Byte-Swap Macros
endian.h — C header, 1 KB
File contents
#ifndef ENDIAN_H #define ENDIAN_H // Intel Byte-Swap Macros from // http://download.intel.com/design/intarch/papers/endian.pdf #define SwapTwoBytes(data) \ ( (((data) >> 8) & 0x00FF) | (((data) << 8) & 0xFF00) ) #define SwapFourBytes(data) \ ( (((data) >> 24) & 0x000000FF) | (((data) >> 8) & 0x0000FF00) | \ (((data) << 8) & 0x00FF0000) | (((data) << 24) & 0xFF000000) ) #define SwapEightBytes(data) \ ( (((data) >> 56) & 0x00000000000000FF) | (((data) >> 40) & 0x000000000000FF00) | \ (((data) >> 24) & 0x0000000000FF0000) | (((data) >> 8) & 0x00000000FF000000) | \ (((data) << 8) & 0x000000FF00000000) | (((data) << 24) & 0x0000FF0000000000) | \ (((data) << 40) & 0x00FF000000000000) | (((data) << 56) & 0xFF00000000000000) ) // Usage example: // uint16_t twoByteValue; // 16-bit long number // // twoByteValue = SwapTwoBytes(twoByteValue); #endif // ENDIAN_H