我如何将这些字节转换为浮点数?
How can i translate these bytes to float?
\x00\x16 7G
\x8d\xed 6G
\x1a\x16 7G
\x00\x16 7G
5E 7G
这些是 BTCUSDT 价格数据..所以可能会像 44xxx.xxx 45xxx.xxx 一样呈现。这个数字怎么弄?我不明白。我只知道 \x 是十六进制数,其他的可能是 ASCII 码。
您拥有的字节是数字 46870、46829.55078125、46870.1015625、46870 和 46917.20703125 的 IEEE-754 编码。
要对其进行解码,请按 little-endian 顺序将字节复制到 float
对象中,然后将它们解释为该 float
对象。如何做到这一点的细节将取决于所使用的编程语言,问题没有说明。
要手动解码它们,写出每四个字节的 32 位,首先是第四个字节的位(在 high-value 位置),然后是第三个字节的位,然后是第二个字节的位,然后是第一个。从这32位中,取第一个作为符号位s。将接下来的八位作为指数代码e的位。取后23位为有效位码f.
解码符号位:令S = (−1)s.
解码指数位:将它们解释为无符号 eight-bit 数字,e。那么:
- 若e为255且f为零,则表示的数为+∞或-∞,视S 为 +1 或 −1。解码完成,停止。
- 如果e为255且f不为零,则数据表示一个NaN(Not a Number),而f 包含补充信息。在典型的实现中,如果设置了 f 的高位,则 NaN 是安静的,否则是信号。解码完成,停止。
- 如果 e 为零,令 E = −126 并令 F = 0 .
- 否则,令E = e−127 并令F = 1.
解码有效位:让F = F + f•2−23.
代表的数字是S • F • 2E .
\x00\x16 7G
\x8d\xed 6G
\x1a\x16 7G
\x00\x16 7G
5E 7G
这些是 BTCUSDT 价格数据..所以可能会像 44xxx.xxx 45xxx.xxx 一样呈现。这个数字怎么弄?我不明白。我只知道 \x 是十六进制数,其他的可能是 ASCII 码。
您拥有的字节是数字 46870、46829.55078125、46870.1015625、46870 和 46917.20703125 的 IEEE-754 编码。
要对其进行解码,请按 little-endian 顺序将字节复制到 float
对象中,然后将它们解释为该 float
对象。如何做到这一点的细节将取决于所使用的编程语言,问题没有说明。
要手动解码它们,写出每四个字节的 32 位,首先是第四个字节的位(在 high-value 位置),然后是第三个字节的位,然后是第二个字节的位,然后是第一个。从这32位中,取第一个作为符号位s。将接下来的八位作为指数代码e的位。取后23位为有效位码f.
解码符号位:令S = (−1)s.
解码指数位:将它们解释为无符号 eight-bit 数字,e。那么:
- 若e为255且f为零,则表示的数为+∞或-∞,视S 为 +1 或 −1。解码完成,停止。
- 如果e为255且f不为零,则数据表示一个NaN(Not a Number),而f 包含补充信息。在典型的实现中,如果设置了 f 的高位,则 NaN 是安静的,否则是信号。解码完成,停止。
- 如果 e 为零,令 E = −126 并令 F = 0 .
- 否则,令E = e−127 并令F = 1.
解码有效位:让F = F + f•2−23.
代表的数字是S • F • 2E .