C - 浮点数的序列化(浮点数,双精度数)

psi*_*lia 13 c floating-point floating-point-conversion

如何将浮点数转换为字节序列,以便它可以保存在文件中?这种算法必须快速且高度便携.它必须允许相反的操作,反序列化.如果每个值(持久空间)只需要非常微小的多余位,那就太好了.

Fab*_*llo 12

假设您正在使用主流编译器,C和C++中的浮点值遵循IEEE标准,并且当以二进制形式写入文件时,可以在任何其他平台中恢复,前提是您使用相同的字节endianess进行写入和读取.所以我的建议是:选择一个选择的结尾,在写作之前或阅读之后,检查该结尾是否与当前平台相同; 如果没有,只需交换字节.

  • 是不是将那些不支持IEEE标准的平台视为例外,并且当需要它们的(稀有)版本时,只需在那里进行必要的转换?这是一篇关于差异的好文章:http://www.codeproject.com/KB/applications/libnumber.aspx (2认同)