【问题标题】:Python converting binary data to 64-bit floating point. "error: unpack requires a buffer of 4 bytes"Python 将二进制数据转换为 64 位浮点数。 “错误:解包需要 4 个字节的缓冲区”
【发布时间】:2022-01-18 02:43:31
【问题描述】:

我正在尝试使用十六进制表示转换二进制文件: 4187D78400000000。这具有 50000000 的 64 位浮点值(大端序)。

但是,当我尝试使用以下方法解压结构时:

sample_freq = byte[8:16]
print(sample_freq)
sample_freq = struct.unpack('f', byte[8:16])
print(sample_freq)

我收到以下错误:

b'A\x87\xd7\x84\x00\x00\x00\x00'
Traceback (most recent call last):

  File "C:XXXXX", line 32, in <module>
    sample_freq = struct.unpack('f', byte[8:16])

error: unpack requires a buffer of 4 bytes

【问题讨论】:

    标签: python python-3.x floating-point binary


    【解决方案1】:

    如果您使用字符f 来解包该值,它将尝试读取一个 32 位浮点数。要解码 64 位值,您应该使用字符 d 将其读取为双精度值。 所以这应该是正确的做法:

    sample_freq = byte[8:16]
    print(sample_freq)
    sample_freq = struct.unpack('d', byte[8:16])
    print(sample_freq)
    

    【讨论】:

      猜你喜欢
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-11
      • 1970-01-01
      相关资源
      最近更新 更多