1

我编写了一些 C 代码,将某些值序列化为一个文件,该文件随后在另一台机器上用 Java 反序列化(使用自定义代码)。

我正在序列化的值中有 64 位双精度浮点实数。当我编写代码时,它将被编译并仅在 Linux 上运行,并且gcc可以编译它。我曾经ieee754.h根据 IEEE 754 标准访问值的所有部分,并将这些部分写入文件。在 Java 端,我会简单地使用Double.longBitsToDouble(long)来重新组合值。

问题是我被要求使用xlc10 使代码能够在 AIX 5.3 上编译和运行。

ieee754.h在 AIX 上是否有任何等价物?

4

1 回答 1

2

缺少字节序问题,IEEE754 是一种固定格式。不需要系统标头来告诉您它的外观。只需执行以下操作:

uint64_t rep;
double x;
memcpy(&rep, &x, sizeof rep);

如果您在一个必须这样做的平台上,您可能希望包含一些用于有条件地对结果进行字节顺序交换的代码,但据我所知,AIX 不会是其中之一。

于 2012-05-28T23:46:23.707 回答