除IEEE754之外是否还有32位浮点表示

时间:2018-05-24 11:46:40

标签: floating-point binaryfiles binary-data data-conversion ieee-754

前言

我目前正在尝试解密一种旧的二进制格式(在20世纪80年代中期到日本开发),它将浮点值存储在4字节块中,而不是用IEEE754标准转换。我有一个程序为我转换值,所以我可以操纵二进制文件来更改存储的值并查看结果,但我无法弄清楚如何解释它们。

我确实解释了4个字节的每个可能的排列作为IEEE浮点数,但没有一个是正确的,所以我可以说它没有字节顺序问题也不是我知道或可以在互联网上找到的浮点数表示

我试图调查我使用的程序的程序集,但是我的汇编程序技能不够好,无法从中获取任何东西。

以下是一些例子:

  • A0 78 2D 00 = 298。
  • A0 78 2D 01 = 1975.7
  • A0 78 2D 02 = 3653.4
  • A0 78 2C 00 = 291.4
  • A0 78 2C 02 = 3646.8

Actuall问题:

在IEEE754标准之外/之前是否还有其他(旧的)32位浮点表示?

1 个答案:

答案 0 :(得分:6)

它不是浮点表示而是固定点表示。二进制4字节块是小端32位整数,表示浮点值超过10000:

Byte repr.   int hexa   int dec. int val / 10000.
A0 78 2D 00  0x002d78a0  2980000 298.0
A0 78 2D 01  0x012d78a0 19757216 1975.7216
A0 78 2D 02  0x022d78a0 36534432 3653.4432
A0 78 2C 00  0x002c78a0  2914464 291.4464
A0 78 2C 02  0x022c78a0 36468896 3646.8896

这通常用于表示修正精度时以及何时需要精确操作时的十进制数,例如表示货币