Python converting binary data to 64-bit floating point. "error: unpack requires a buffer of 4 bytes"

Python converting binary data to 64-bit floating point. "error: unpack requires a buffer of 4 bytes"

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

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

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

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

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