解码十六进制协调
问题描述:
我有一个十六进制有效载荷:解码十六进制协调
872fa5596122f23e24efb4fc1013b7000000000718
的纬度和经度是在小尾数和在以下位置:
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'
答
首先,您需要的hexdecimal表示转换成一个字节对象:
import codecs
binary = "872fa5596122f23e24efb4fc1013b7000000000718"
binary_bytes = codecs.decode(binary, 'hex')
print(binary_bytes)
# b'\x87/\xa5Ya"\xf2>$...
然后你可以使用struct
解码为整数或任何:
import struct
# Guessed the offsets...
lng, lat = struct.unpack('<ll', binary_bytes[0:4] + binary_bytes[20:24])
print((lng, lat))
# (15003997831, 1056055905)
+0
[bytes.fromhex](https://docs.python.org/3/library/stdtypes.html#bytes.fromhex) –
尝试先编码二进制:'struct.unpack('
L3viathan
啊,我ddint意识到,使用python 2.7 – Harry
我遵循正确的逻辑吗?首先解压缩到二进制文件? – Harry