我正在尝试将unpack十六进制字符串转换为Python中的double.当我尝试解压缩以下内容时:
unpack('d', "4081637ef7d0424a");
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
struct.error:unpack需要一个长度为8的字符串参数
这对我来说没有多大意义,因为double是8个字节长,而且
2个字符= 1个十六进制值= 1个字节
所以本质上,8字节长的双倍是16字符的十六进制字符串.
您需要先将十六进制数字转换为二进制字符串:
struct.unpack('d', "4081637ef7d0424a".decode("hex"))
Run Code Online (Sandbox Code Playgroud)
要么
struct.unpack('d', binascii.unhexlify("4081637ef7d0424a"))
Run Code Online (Sandbox Code Playgroud)
后一版本适用于Python 2和3,前者仅适用于Python 2