这些十六进制值是什么意思?

What does these hex values mean?

我有 table 个十六进制值(我认为它们是十六进制字节?),我想弄清楚它们在十进制中的含义。

在网站上,作者声明突出显示的值 43 7A 00 00 表示十进制的 250,但是当我将这些输入到十六进制到十进制转换器我得到 1132068864.

对于我的生活,我不明白发生了什么。我知道突出显示的值 1 2 3 4 5 6 7 8 9 A B C D E F 上面的命名是十六进制系统,但我不明白你如何读取 [=29 中的值=].

不胜感激!

这里发生的是字节 43 7A 00 00 没有被视为整数。它们被视为 IEEE 格式的 32 位浮点数。这就是为什么图像中 Inspector window 中的 Type 列显示 Float。当以这种方式解释这些字节时,它们确实表示值 250.0.

您可以在 https://en.wikipedia.org/wiki/Single-precision_floating-point_format

阅读有关格式的详细信息

在这种特殊情况下,字节将被解码为:

  • 0的"sign"位,表示该值为正数
  • 包含位 1000 0110(或十六进制 86,十进制 134)的 "exponent" 字段,意味着指数的值为 7(通过减去计算127 来自字段的原始值,134)
  • 包含位 1111 1010 0000 0000 0000 0000 的 "significand" 字段(或十六进制 FA0000,十进制 16384000)

尾数和指数根据公式组合:

    value = ( significand * (2 ^ exponent) ) / (2 ^ 23)

其中 a ^ b 表示“a 次方 b”。

在这种情况下,给出:

    value = ( 16384000 * 2^7 ) / 2^23
          = ( 16384000 * 128 ) / 8388608
          = 250.0