我有一个十六进制值的值表(我认为它们是十六进制字节?)我试图找出它们在十进制中的含义。
在网站上,作者声明突出显示的值43 7A 00 00表示十进制250,但是当我将它们输入到十六进制到十进制转换器时,我得到1132068864。
对于我的生活,我不明白发生了什么。我知道突出显示值上面的命名1 2 3 4 5 6 7 8 9 A B C D E F是十六进制系统,但我不明白你如何读取表格内的值。
帮助将不胜感激!
这里发生的是字节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