我写了一些C代码,它将某些值序列化为一个文件,随后在另一台机器上用Java反序列化(使用自定义代码)。
我正在序列化的值中有64位双精度浮点实数。当我编写代码时,它将被编译并仅在具有gcc
的Linux上运行以编译它。我根据IEEE 754标准使用ieee754.h
来访问值的所有部分,并将这些部分写入文件。在Java端,我只需使用Double.longBitsToDouble(long)
重新组合值。
问题在于我被要求使用xlc
10使代码能够在AIX 5.3上编译和运行。
AIX上是否有ieee754.h
的等价物?
答案 0 :(得分:2)
缺少字节序问题,IEEE754是一种固定格式。系统标题不需要告诉您它的外观。做一些像:
uint64_t rep;
double x;
memcpy(&rep, &x, sizeof rep);
如果您在一个必须这样做的平台上,您可能希望包含一些用于有条件地按字节顺序交换结果的代码,但据我所知,AIX不会是其中之一。