39 uint32_t firstbyte = (
reinterpret_cast<uint8_t*
>(&testvar))[0];
40 if (firstbyte == 0xff)
42 if (firstbyte == 0xfe)
52#if defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
54#elif defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
56#elif defined(__BYTE_ORDER__)
57#error "uhm, __BYTE_ORDER__ has some strange value"
66#define BSWAP16(A) _byteswap_ushort(A)
67#define BSWAP32(A) _byteswap_ulong(A)
68#define BSWAP64(A) _byteswap_uint64(A)
70#define BSWAP16(A) __builtin_bswap16(A)
71#define BSWAP32(A) __builtin_bswap32(A)
72#define BSWAP64(A) __builtin_bswap64(A)
90 auto i = std::bit_cast<uint32_t>(f);
92 return std::bit_cast<float>(i);
95 auto i = std::bit_cast<uint64_t>(d);
97 return std::bit_cast<double>(i);
105 memcpy(&ret, data,
sizeof(
T));
116template <
typename T>
inline T getBE(
const void* data) {
120template <
typename T>
inline T getLE(
const void* data) {
assert(dim.area() >=area)
Endianness getHostEndiannessRuntime()
int8_t getByteSwapped(int8_t v)
uint16_t getU16LE(const void *data)
uint16_t getU16BE(const void *data)
Endianness getHostEndianness()
uint32_t getU32LE(const void *data)
uint32_t getU32BE(const void *data)
T getLE(const void *data)
T getBE(const void *data)