我有一个十六进制有效载荷:
872fa5596122f23e24efb4fc1013b7000000000718
LAT和LNG位于小endian,在以下位置:
lng - binary[20:28]
lat - binary[28:32]
我不确定如何获得正确的结果。我以为首先我必须将十六进制更改为小恩迪安(Little Endian)?然后将其转换为int?我尝试了:
data = struct.unpack('<ll',binary[12:20])
输出:
TypeError: a bytes-like object is required, not 'str'
您首先需要将十六点表示形式转换为字节-Object:
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)