serialization - 跨不同 CPU 架构的双倍?

标签 serialization floating-point portability cpu-architecture

是否可以通过网络发送双浮点值(当然调整为正确的字节顺序)并在不同的 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 SteeleWill Clinger .有一个 later followup on doing it faster由汉堡和 Dybvig。

关于serialization - 跨不同 CPU 架构的双倍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1245531/

相关文章:

c++ - 从同一代码库序列化 std::function

c - 为什么c变量总是输出0?

perl - 如何使用科学记数法制作 Perl 的 system() 格式参数?

perl - 如何以可移植的方式在 Perl 中获取当前用户?

java - 从 Java 程序,可移植的方式来编写带重音的字符串

windows - 最小的 Windows (PE) 可执行文件是什么?

serialization - Rust 数据结构的二进制序列化

java - 如何在java中将xml文件反序列化为对象列表?

xml - 二进制序列化与 JSON 与 xml

c++ - 两个浮点无穷大值的 QCOMPARE