5
我想切換float和double值的「字節序」,它的工作原理確定,通過執行類似:交換「字節序」的花車和雙打
float const v{1.f};
swap(reinterpret_cast<::std::uint32_t const&>(v));
是否存在更好的方法來做交換,沒有演員?
編輯:swap()
是gcc的內置函數的C++包裝,我沒有在這裏包括它。
uint16_t __builtin_bswap16 (uint16_t x)
uint32_t __builtin_bswap32 (uint32_t x)
uint64_t __builtin_bswap64 (uint64_t x)
某些數據格式(如CBOR)需要交換字節數。
這並不交換任何東西。事實上,我很確定這不會編譯。 –
IEEE不包括字節碼,但實際上,您可能會認爲它的工作原理與整數相同。所以是的,這是醜陋的,但它通過鑄造起作用。 https://en.wikipedia.org/wiki/Endianness#Floating-point –
假設sizeof(float)== sizeof(uint32_t) – Christophe