Wechsel der "Endianness" von Floats und Doubles
Ich möchte die "Endianness" von float und double Werten umschalten, es funktioniert in Ordnung, indem ich so etwas mache wie:
float const v{1.f};
swap(reinterpret_cast<::std::uint32_t const&>(v));
Gibt es eine bessere Möglichkeit, den Tausch ohne Besetzung durchzuführen?
EDIT:swap()
ist ein C ++ - Wrapper für die integrierten Funktionen von gcc. Ich habe ihn hier nicht eingefügt.
uint16_t __builtin_bswap16 (uint16_t x)
uint32_t __builtin_bswap32 (uint32_t x)
uint64_t __builtin_bswap64 (uint64_t x)
Endianess muss für einige Datenformate wie CBOR ausgetauscht werden.