4

是否可以通过网络发送双浮点值(当然要针对正确的字节顺序进行调整)并在不同的 cpu 架构上互换使用它们,特别是 i386、mips(几个不同的内核)、powerpc(e300、e500)。没有非常旧的硬件。

使用 gcc 4.2.1 作为带有 -Os 的编译器,适用于所有架构。

据说它到处都是 IEEE-754 标准(是吗?),但正如维基百科所说:

IEEE 754-1985 允许实现中的许多变化(例如某些值的编码和某些异常的检测)。IEEE 754-2008 已经收紧了其中的许多内容,但仍然存在一些变化(尤其是二进制格式)。

我不打算传递 NaN 或其他特殊的东西,只是有效的十进制数字。

4

2 回答 2

2

如果您想发送标准化数字的表示,那么您在任何现代架构上都是完全安全的。如有任何疑问,请查看架构手册。对于非规范化数字,您必须检查。

当然,您必须能够使用正确的字节顺序分解成字节并在另一端重新组装,但听起来您知道如何做到这一点。

如前所述,您不能期望不同的 CPU 以相同的方式实现标准的每个部分,但这不是必需的。

从 IEEE 浮点到 ASCII 的转换充满了错误;Guy SteeleWill Clinger在 1990 年代发表了好论文。Burger 和 Dybvig 后来跟进了关于做得更快的后续行动。

于 2009-08-07T16:19:30.153 回答
1

您本质上是在问“我可以在系统之间无缝传输二进制数据吗”。答案是肯定的,只要两个系统同意相同的格式。如果您知道您期望使用哪个 CPU,请检查他们的 IEEE 标准合规性,您应该可以开展业务。

于 2009-08-07T15:56:03.663 回答