gpt4 book ai didi

c++ - C/C++ - 将 float 转换为字节数组,使字节保留顺序

转载 作者:太空宇宙 更新时间:2023-11-04 05:49:48 26 4
gpt4 key购买 nike

有没有办法转换 floatunsigned char fbytes[8]这样:

如果浮点值f1 < f2 , 然后 fbytes1[i]绝不能大于 fbytes2[i]对于 0 <= i <= 7

这背后的意图是序列化和存储一个 float ,并且仍然能够通过逐字节比较来进行比较。例如。即使 float 存储为原始字节,我也可以通过简单的字节比较对行进行排序并仍然保持顺序。

最佳答案

如果你忽略 NAN(它总是比较不等于所有东西,包括它们自己),这很简单。否则,这是不可能的。

首先,直接转换为大端字节数组。

符号位是第一个字节的高位。接下来的位是指数,然后是尾数。

如果未设置符号位,请将其设置为所有正数排在所有负数之后。

否则,将 ~ 运算符应用于所有字节(或者当它全部打包在一个整数中时执行此操作——为什么你仍然需要字节?)。这将反转负数中的排序顺序,并将它们移到正数下方。

您可能还想合并零(如果在任何地方设置的唯一位是符号位,请将其清除)。

关于c++ - C/C++ - 将 float 转换为字节数组,使字节保留顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45580645/

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