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

问题描述 投票:-1回答:1

我有一个十六进制值的值表(我认为它们是十六进制字节?)我试图找出它们在十进制中的含义。

enter image description here

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

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

帮助将不胜感激!

hex hexdump hex-editors
1个回答
1
投票

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

您可以在https://en.wikipedia.org/wiki/Single-precision_floating-point_format上阅读有关格式的详细信息

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

  • 0的“符号”位,表示该值为正数
  • 包含位1000 0110(或十六进制86,十进制134)的“指数”字段,表示指数的值为7(通过从字段的原始值减去127计算得出,134)
  • 包含位1111 1010 0000 0000 0000 0000(或十六进制FA0000,十进制16384000)的“有效数字”字段

有效数和指数根据公式组合:

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

其中a ^ b表示“a up to the power b”。

在这种情况下,给出:

    value = ( 16384000 * 2^7 ) / 2^23
          = ( 16384000 * 128 ) / 8388608
          = 250.0
© www.soinside.com 2019 - 2024. All rights reserved.