22 constexpr auto kBytes_ = bit_cast<array<uint8_t, 4>> (uint32_t{0x01020304});
23 return kBytes_[0] == 4 ? Endian::eLittleByte
24 : kBytes_[0] == 1 ? Endian::eBigByte
25 : kBytes_[0] == 2 ? Endian::eLittleWord
40 Require (from == Endian::eBig or from == Endian::eLittle);
41 Require (to == Endian::eBig or to == Endian::eLittle);
45 if constexpr (
sizeof (T) == 1) {
48 if constexpr (
sizeof (T) == 2) {
50 return ((value & 0xFF) << 8) | ((value >> 8) & 0xFF);
52 if constexpr (
sizeof (T) == 4) {
54 return ((value & 0xFF) << 24) | ((value & 0xFF00) << 8) | ((value >> 8) & 0xFF00) | ((value >> 24) & 0xFF);
#define AssertNotImplemented()
Endian
in principle complicated question of correspondence between bit and byte and word numbering,...
constexpr Endian GetEndianness()
returns native (std::endian::native) Endianness flag. Can be complicated (mixed, etc)....
constexpr T EndianConverter(T value, Endian from, Endian to)