【发布时间】:2018-02-07 01:50:51
【问题描述】:
我有一个十六进制有效载荷:
872fa5596122f23e24efb4fc1013b7000000000718
lat 和 lng 采用 little endian 格式,位于以下位置:
lng - binary[20:28]
lat - binary[28:32]
我不确定如何获得正确的结果。我想首先我必须将十六进制更改为小端?然后将其转换为 int?我试过这个:
data = struct.unpack('<ll',binary[12:20])
输出:
TypeError: a bytes-like object is required, not 'str'
【问题讨论】:
-
先尝试对二进制文件进行编码:
struct.unpack('<ll', binary.encode()[12:20])。您使用的是 Python 3,其中字符串!= 字节。 -
啊,我明白了,适用于 python 2.7
-
我的逻辑是否正确?先解压再转二进制?
-
不,首先将字符串转换为字节(从
"872fa5596122f23e24efb4fc1013b7000000000718"到b"872fa5596122f23e24efb4fc1013b7000000000718"),然后将其解包。 -
你会如何解压它,有什么参数?
标签: python hex endianness