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

bec*_*kah 6 python hex

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

unpack('d', "4081637ef7d0424a");
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

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

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

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

所以本质上,8字节长的双倍是16字符的十六进制字符串.

Sve*_*ach 7

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

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