213 lines
2.8 KiB
C
213 lines
2.8 KiB
C
#include <blue/core/endian.h>
|
|
|
|
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;
|
|
} |