是否可以通过网络发送双浮点值(当然调整为正确的字节顺序)并在不同的 CPU 架构上互换使用它们,特别是 i386、mips(几个不同的内核)、powerpc(e300、e500)。没有非常旧的硬件。
使用 gcc 4.2.1 作为带有 -Os 的编译器,适用于所有架构。
据说它到处都是 IEEE-754 标准(是吗?),但正如维基百科所说:
The IEEE 754-1985 allowed many variations in implementations (such as the encoding of some values and the detection of certain exceptions). IEEE 754-2008 has tightened up many of these, but a few variations still remain (especially for binary formats).
我不打算传递 NaN 或其他特殊的东西,只是有效的十进制数。
最佳答案
如果您想发送规范化数字的表示,那么您在任何现代架构上都是完全安全的。如有任何疑问,请查看架构手册。对于非规范化数字,您必须检查。
当然,您必须能够使用正确的字节顺序将其分解为字节并在另一端重新组装,但听起来您知道如何做到这一点。
如前所述,您不能期望不同的 CPU 以相同的方式实现标准的每个部分,但这不是必需的。
从 IEEE 浮点数到 ASCII 的转换充满了错误; 1990年代有好论文 Guy Steele和 Will Clinger .有一个 later followup on doing it faster由汉堡和 Dybvig。
关于serialization - 跨不同 CPU 架构的双倍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1245531/