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> 
   59 uint16_t 
be16toh(uint16_t big_endian_16bits);   
 
   60 uint16_t 
le16toh(uint16_t little_endian_16bits);
 
   64 uint32_t 
be32toh(uint32_t big_endian_32bits);   
 
   65 uint32_t 
le32toh(uint32_t little_endian_32bits);
 
   69 uint64_t 
be64toh(uint64_t big_endian_64bits);   
 
   70 uint64_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