35#define LITTLE_ENDIAN   magic-number 
   40#define BIG_ENDIAN      magic-number 
   45#define PDP_ENDIAN      magic-number 
   55#define BYTE_ORDER      <LITTLE_ENDIAN or BIG_ENDIAN> 
   59uint16_t 
be16toh(uint16_t big_endian_16bits);   
 
   60uint16_t 
le16toh(uint16_t little_endian_16bits);
 
   64uint32_t 
be32toh(uint32_t big_endian_32bits);   
 
   65uint32_t 
le32toh(uint32_t little_endian_32bits);
 
   69uint64_t 
be64toh(uint64_t big_endian_64bits);   
 
   70uint64_t 
le64toh(uint64_t little_endian_64bits);
 
   77#  define LITTLE_ENDIAN 1234 
   80#  define BIG_ENDIAN    4321 
   83#  define PDP_ENDIAN    3412 
   86#  define BYTE_ORDER    __BYTE_ORDER__ 
   91#if (LITTLE_ENDIAN != 1234) || (BIG_ENDIAN != 4321) || (PDP_ENDIAN != 3412) 
   92#  error "Mismatching magic numbers to refer to endianness" 
   95#if BYTE_ORDER == LITTLE_ENDIAN 
   97#  define htobe16(_x) __builtin_bswap16(_x) 
  100#  define htole16(_x) ((uint16_t)(_x)) 
  103#  define be16toh(_x) __builtin_bswap16(_x) 
  106#  define le16toh(_x) ((uint16_t)(_x)) 
  109#  define htobe32(_x) __builtin_bswap32(_x) 
  112#  define htole32(_x) ((uint32_t)(_x)) 
  115#  define be32toh(_x) __builtin_bswap32(_x) 
  118#  define le32toh(_x) ((uint32_t)(_x)) 
  121#  define htobe64(_x) __builtin_bswap64(_x) 
  124#  define htole64(_x) ((uint64_t)(_x)) 
  127#  define be64toh(_x) __builtin_bswap64(_x) 
  130#  define le64toh(_x) ((uint64_t)(_x)) 
  132#elif BYTE_ORDER == BIG_ENDIAN 
  134#  define htole16(_x) __builtin_bswap16(_x) 
  137#  define htobe16(_x) ((uint16_t)(_x)) 
  140#  define le16toh(_x) __builtin_bswap16(_x) 
  143#  define be16toh(_x) ((uint16_t)(_x)) 
  146#  define htole32(_x) __builtin_bswap32(_x) 
  149#  define htobe32(_x) ((uint32_t)(_x)) 
  152#  define le32toh(_x) __builtin_bswap32(_x) 
  155#  define be32toh(_x) ((uint32_t)(_x)) 
  158#  define htole64(_x) __builtin_bswap64(_x) 
  161#  define htobe64(_x) ((uint64_t)(_x)) 
  164#  define le64toh(_x) __builtin_bswap64(_x) 
  167#  define be64toh(_x) ((uint64_t)(_x)) 
  170#  error "Byte order not supported" 
uint16_t be16toh(uint16_t big_endian_16bits)
big endian to host, 16 bit
uint16_t htobe16(uint16_t host_16bits)
host to big endian, 16 bit
uint32_t le32toh(uint32_t little_endian_32bits)
little endian to host, 32 bit
uint32_t htobe32(uint32_t host_32bits)
host to big endian, 32 bit
uint16_t le16toh(uint16_t little_endian_16bits)
little endian to host, 16 bit
uint64_t htobe64(uint64_t host_64bits)
host to big endian, 64 bit
uint64_t be64toh(uint64_t big_endian_64bits)
big endian to host, 64 bit
uint32_t be32toh(uint32_t big_endian_32bits)
big endian to host, 32 bit
uint64_t htole64(uint64_t host_64bits)
host to little endian, 64 bit
uint32_t htole32(uint32_t host_32bits)
host to little endian, 32 bit
uint16_t htole16(uint16_t host_16bits)
host to little endian, 16 bit
uint64_t le64toh(uint64_t little_endian_64bits)
little endian to host, 64 bit