обмен «порядком байтов» чисел с плавающей и двойной
Я хотел бы переключить «порядок байтов» значений типа float и double, все работает нормально, выполнив что-то вроде:
float const v{1.f};
swap(reinterpret_cast<::std::uint32_t const&>(v));
Существует ли лучший способ сделать обмен без приведения?
РЕДАКТИРОВАТЬ:swap()
является оберткой C ++ для встроенных функций gcc, я не включал ее здесь
uint16_t __builtin_bswap16 (uint16_t x)
uint32_t __builtin_bswap32 (uint32_t x)
uint64_t __builtin_bswap64 (uint64_t x)
Подстановка порядка байтов необходима для некоторых форматов данных, таких как CBOR.