解码十六进制协调

问题描述:

我有一个十六进制有效载荷:解码十六进制协调

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' 
+1

尝试先编码二进制:'struct.unpack(' L3viathan

+0

啊,我ddint意识到,使用python 2.7 – Harry

+0

我遵循正确的逻辑吗?首先解压缩到二进制文件? – Harry

首先,您需要的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) –