【问题标题】:AIX equivalent of ieee754.hAIX 等效于 ieee754.h
【发布时间】:2012-05-29 07:46:23
【问题描述】:

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

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

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

在 AIX 上是否有任何等效的 ieee754.h

【问题讨论】:

    标签: c serialization include aix ieee-754


    【解决方案1】:

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

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

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

    【讨论】:

    • 那么 AIX 上双精度浮点数的内部表示保证是 IEEE 754 格式的吗?我知道这听起来可能很愚蠢,但我不确定这一点,因为 C 的这种保证是出了名的糟糕。
    • 我认为是这样,但您可能想检查一下。一般来说,如果系统的浮点格式不是IEEE的,将其转换为IEEE可能是有损的操作,但是您可以使用frexpldexp来分离出尾数/指数,如果您愿意,可以自己这样做.
    猜你喜欢
    • 2016-08-30
    • 2020-07-01
    • 2017-06-19
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 2013-05-08
    • 2010-12-05
    相关资源
    最近更新 更多