读取十六进制到双精度浮点python

时间:2016-08-08 14:25:42

标签: python hex

我正在尝试将unpack十六进制字符串设置为Python中的double。当我尝试解压缩以下内容时:

unpack('d', "4081637ef7d0424a");

我收到以下错误:

  

struct.error:unpack需要一个长度为8的字符串参数

这对我来说没有多大意义,因为double是8个字节长,并且

2个字符 = 1个十六进制值 = 1个字节

因此,实质上,8字节长的两倍是16字符的十六进制字符串。

2 个答案:

答案 0 :(得分:7)

您需要先将十六进制数字转换为二进制字符串:

struct.unpack('d', "4081637ef7d0424a".decode("hex"))

struct.unpack('d', binascii.unhexlify("4081637ef7d0424a"))

后一版本适用于Python 2和3,前者仅适用于Python 2

答案 1 :(得分:0)

试试这个:

a = "\x40\x81\x63\x7e\xf7\xd0\x42\x4a"
unpack('d', a);