gpt4 book ai didi

c++ - 交换 float 和 double 的 "endianness"

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:21 25 4
gpt4 key购买 nike

我想切换 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。

最佳答案

虽然尝试避免强制转换是一种很好的做法,但像这样的使用才是强制转换存在的原因。字节序交换是一种原始数据操作,所以为了做到这一点,你必须去除输入信息,我会说如果它一开始就不是正确的字节序,那么它就不是 float ,永远不应该那样输入而处于错误的字节序状态。

关于c++ - 交换 float 和 double 的 "endianness",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38859754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com