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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage