我如何将这些字节转换为浮点数?

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.

代表的数字是SF • 2E .