#include b_i16 b_i16_htob(uint16_t v) { b_i16 x; #ifdef BIG_ENDIAN x.i_uval = v; #else uint8_t *b = (uint8_t *)&v; x.i_bytes[0] = b[1]; x.i_bytes[1] = b[0]; #endif return x; } b_i16 b_i16_htos(uint16_t v) { b_i16 x; #ifdef LITTLE_ENDIAN x.i_uval = v; #else uint8_t *b = (uint8_t *)&v; x.i_bytes[0] = b[1]; x.i_bytes[1] = b[0]; #endif return x; } uint16_t b_i16_btoh(b_i16 v) { uint16_t x; #ifdef BIG_ENDIAN x = v.i_uval; #else uint8_t *b = (uint8_t *)&x; b[0] = v.i_bytes[1]; b[1] = v.i_bytes[0]; #endif return x; } uint16_t b_i16_stoh(b_i16 v) { uint16_t x; #ifdef LITTLE_ENDIAN x = v.i_uval; #else uint8_t *b = (uint8_t *)&x; b[0] = v.i_bytes[1]; b[1] = v.i_bytes[0]; #endif return x; } b_i32 b_i32_htob(uint32_t v) { b_i32 x; #ifdef BIG_ENDIAN x.i_uval = v; #else uint8_t *b = (uint8_t *)&v; x.i_bytes[0] = b[3]; x.i_bytes[1] = b[2]; x.i_bytes[2] = b[1]; x.i_bytes[3] = b[0]; #endif return x; } b_i32 b_i32_htos(uint32_t v) { b_i32 x; #ifdef LITTLE_ENDIAN x.i_uval = v; #else uint8_t *b = (uint8_t *)&v; x.i_bytes[0] = b[3]; x.i_bytes[1] = b[2]; x.i_bytes[2] = b[1]; x.i_bytes[3] = b[0]; #endif return x; } uint32_t b_i32_btoh(b_i32 v) { uint32_t x; #ifdef BIG_ENDIAN x = v.i_uval; #else uint8_t *b = (uint8_t *)&x; b[0] = v.i_bytes[3]; b[1] = v.i_bytes[2]; b[2] = v.i_bytes[1]; b[3] = v.i_bytes[0]; #endif return x; } uint32_t b_i32_stoh(b_i32 v) { uint32_t x; #ifdef LITTLE_ENDIAN x = v.i_uval; #else uint8_t *b = (uint8_t *)&x; b[0] = v.i_bytes[3]; b[1] = v.i_bytes[2]; b[2] = v.i_bytes[1]; b[3] = v.i_bytes[0]; #endif return x; } b_i64 b_i64_htob(uint64_t v) { b_i64 x; #ifdef BIG_ENDIAN x.i_uval = v; #else uint8_t *b = (uint8_t *)&v; x.i_bytes[0] = b[7]; x.i_bytes[1] = b[6]; x.i_bytes[2] = b[5]; x.i_bytes[3] = b[4]; x.i_bytes[4] = b[3]; x.i_bytes[5] = b[2]; x.i_bytes[6] = b[1]; x.i_bytes[7] = b[0]; #endif return x; } b_i64 b_i64_htos(uint64_t v) { b_i64 x; #ifdef LITTLE_ENDIAN x.i_uval = v; #else uint8_t *b = (uint8_t *)&v; x.i_bytes[0] = b[7]; x.i_bytes[1] = b[6]; x.i_bytes[2] = b[5]; x.i_bytes[3] = b[4]; x.i_bytes[4] = b[3]; x.i_bytes[5] = b[2]; x.i_bytes[6] = b[1]; x.i_bytes[7] = b[0]; #endif return x; } uint64_t b_i64_btoh(b_i64 v) { uint64_t x; #ifdef BIG_ENDIAN x = v.i_uval; #else uint8_t *b = (uint8_t *)&x; b[0] = v.i_bytes[7]; b[1] = v.i_bytes[6]; b[2] = v.i_bytes[5]; b[3] = v.i_bytes[4]; b[4] = v.i_bytes[3]; b[5] = v.i_bytes[2]; b[6] = v.i_bytes[1]; b[7] = v.i_bytes[0]; #endif return x; } uint64_t b_i64_stoh(b_i64 v) { uint64_t x; #ifdef LITTLE_ENDIAN x = v.i_uval; #else uint8_t *b = (uint8_t *)&x; b[0] = v.i_bytes[7]; b[1] = v.i_bytes[6]; b[2] = v.i_bytes[5]; b[3] = v.i_bytes[4]; b[4] = v.i_bytes[3]; b[5] = v.i_bytes[2]; b[6] = v.i_bytes[1]; b[7] = v.i_bytes[0]; #endif return x; }