无法将十六进制字符串转换为double

问题描述 投票:0回答:1

我有一个小端十六进制字符串(例如,'E61000003C9BFAE53893'),我正在尝试将其转换为double。我尝试过以下方法:

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到浮点数)会很容易,但它证明了我所期望的更具挑战性。

struct binary hex double python-3.6
1个回答
0
投票

0xE61000003C9BFAE53893太长,不能成为双倍。双是8个字节,即9 ... ish?如果你看一下输出中倒数第二个,那就是“0xe58”。

根据错误消息,struct.unpack只接受8字节缓冲区。

© www.soinside.com 2019 - 2024. All rights reserved.