如果我使用以下内容测试我的代码:
#ifndef __STDC_IEC_559__
#error Warning: __STDC_IEC_559__ not defined. The code assumes we're using the IEEE 754 floating point for binary serialization of floats and doubles.
#endif
...如此处所述,我是否保证:
float myFloat = ...;
unsigned char *data = reinterpret_cast<unsigned char*>(&myFloat)
unsigned char buffer[4];
std::memcpy(&Buffer[0], data, sizeof(float));
...会安全地序列化浮点数以写入文件或网络数据包吗?
如果没有,我怎样才能安全地序列化浮点数和双精度数?
另外,谁负责字节排序——我的代码还是操作系统?
为了澄清我的问题:我可以将浮点数转换为 4 个字节并加倍为 8 个字节,并安全地在文件之间或跨网络进行序列化,如果我:
- 断言我们正在使用 IEC 559
- 将结果转换为标准字节顺序(例如网络字节顺序)。