【发布时间】:2021-04-01 07:17:01
【问题描述】:
在这里澄清一下,在这种情况下,DEC 是 Digital Equipment Corporation,而不是十进制。我所拥有的是带有 seeeeeeefffff 的 DEC 的二进制表示......(总 f 为 54)s = 符号位,e = 指数,f = 分数,我需要将其转换为 IEEE-754 格式,最好具有相同的精度.放到上下文中,这表示 gps 的 utc 时间标签。我对术语越来越感到困惑,因为我发现了多个可能代表 DEC 而可能不代表的名称。例如 VAX-ll、DEC64、PDP-11,我都试过了,但都没有成功。
这里是原始数据(十六进制),代表 DEC dpfp 中的 UTC 时间标签,以供参考,以及它的大约值。应该是:(请记住,此数据是 LITTLE ENDIAN,而 IEEE-754 应该是大端)
0x99, 0x48, 0xD9, 0xE4, 0x12, 0xF3, 0xF9, 0xF0 = 1608587778
【问题讨论】:
-
请注意,VAX-11 has two different types 的 64 位浮点表示。
-
字节顺序是一个单独的问题。不同的系统可能以不同的字节顺序存储 IEEE-754 double。重要的部分是将 DEC 双精度值读取为 64 位无符号值,然后使用它生成 IEEE-754 双精度值作为 64 位无符号值(如果实现使用 IEEE-,则直接作为 C
double754 本机)。 -
@IanAbbott 我不确定我是否理解你,你是说我不需要对转换为 IEEE-754 的位进行任何处理吗?为简单起见,让我们假设一切都是大端。 (我的代码本身确实支持 IEEE-754,仅供参考)
-
@robell 你确实需要处理这些问题。
-
@IanAbbott 好的,这就是我遇到问题的部分,您知道或有任何我可以参考的源材料吗?
标签: c floating-point binary