无法将十六进制字符串转换为双精度

时间:2019-04-09 23:19:07

标签: struct binary hex double python-3.6

我有一个小端的十六进制字符串(例如,“ E61000003C9BFAE53893”),我试图将其转换为双精度型。我尝试了以下方法:

struct.unpack('<d', binascii.unhexlify('E61000003C9BFAE53893'))

但我不断得到

struct.error: unpack requires a buffer of 8 bytes

我检查了binascii.unhexlify('E61000003C9BFAE53893')的输出,它看起来是正确的:

>> print (binascii.unhexlify('E61000003C9BFAE53893'))

b'\xe6\x10\x00\x00<\x9b\xfa\xe58\x93'

所以我不确定是什么问题。

在某些情况下,我有一堆坐标数据编码为WKB,但是geopandas仅支持WKT。我认为编写一个将一个函数转换为另一个函数(或将WKB转换为浮点数)会很容易,但是事实证明,这比我预期的更具挑战性。

1 个答案:

答案 0 :(得分:0)

0xE61000003C9BFAE53893太长,无法翻倍。双精度数是8个字节,即9 ... ish?如果您查看输出中倒数第二个,则为“ 0xe58”。

根据错误消息,

struct.unpack仅接受8个字节的缓冲区。