【发布时间】:2016-12-14 09:10:29
【问题描述】:
我正在尝试在 Python 中将 unpack 十六进制字符串转换为双精度。当我尝试解压缩以下内容时:
unpack('d', "4081637ef7d0424a");
我收到以下错误:
struct.error: unpack 需要一个长度为 8 的字符串参数
这对我来说没有多大意义,因为双精度数是 8 个字节长,并且
2 个字符 = 1 个十六进制值 = 1 个字节
所以本质上,一个 8 字节长的 double 将是一个 16 个字符的十六进制字符串。
【问题讨论】:
-
struct.unpack期望的“字符串”不是十六进制字符串,而是原始字节。在 Python3 中,它将是bytes,而不是str。使用bytearray.fromhex或只使用str.decode,请参阅 Sven Marnach 的回答。