解码十六进制以协调



我有一个十六进制有效载荷:

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)

最新更新