【问题标题】:Decode Float (serialized as double)解码浮点数(序列化为双精度)
【发布时间】:2023-02-20 10:27:27
【问题描述】:

尝试解码 Python 3.8 中的字节数组,其中发送接口规范声明格式为“float(序列化为双精度)”。

使用从接口接收到的示例字节数组,这是我得到的结果

>>> import struct
>>> bytes_arr = b'\xbf\xe9\x99\x99\xa0\x00\x00\x00'
>>> print(struct.unpack('d', bytes_arr))
(3.40792534166e-312,)

父应用程序(显示我通过界面接收的相同数据)声明答案为-0.8。这显然是四舍五入的,但解码方式不同。

我哪里错了?

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    您的值采用 big endian 格式:

    >>> print(struct.unpack('>d', bytes_arr))
    (-0.800000011920929,)
    

    【讨论】:

      猜你喜欢
      • 2010-12-19
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多