这些十六进制值是什么意思?
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
我有 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