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)
我正在尝试用十六进制表示法转换二进制文件: 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)