我有一张十六进制值的表格(我认为它们是十六进制字节吗?),我试图找出它们的十进制含义。
在网站上,作者指出,突出显示的值 43 7A 00 00 表示十进制 250 ,但是当我将它们输入到十六进制至十进制转换器中时,得到< strong> 1132068864 。
对于我的一生,我不知道发生了什么事。我知道突出显示的值 1 2 3 4 5 6 7 8 9 A B C D E F 上面的命名是十六进制系统,但是我不明白您如何读取表中的值。
我们将不胜感激!
答案 0 :(得分: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 提升到幂 b ”。
在这种情况下,给出:
value = ( 16384000 * 2^7 ) / 2^23
= ( 16384000 * 128 ) / 8388608
= 250.0