首先,这是我在这里的第一个问题,所以请耐心等待我;-)
连接到设备时,我收到一个字节字符串,其中包含不同数量的“条目”,我想对其进行解包/拆分。
结果的第一部分给出了总条目数,然后是所有条目,这些条目以空格分隔。由于每个条目的描述也可能有空格,因此描述的长度也以十六进制形式提供。
例如,这是一个包含 2 个条目的结果字符串:
2 A Unassigned 5FADD9BF 5FBEB461 1C34 18 FtpC1: xml upload failed 5FB3CE6C 5FBD44BC 3
结果说明:
2 = number of entries (hex)
A = length of description following next (hex)
Description (string)
Timestamp (hex)
Timestamp (hex)
Counter (hex)
18 = length of description
Description
Timestamp
Timestamp
Counter
我假设我应该使用 struct 来解压这些字符串并能够处理结果,但说实话,我对如何开始有点迷茫。有什么建议么?
先感谢您!
编辑:
data = b'2 A Unassigned 5FADD9BF 5FBEB461 1C34 18 FtpC1: xml upload failed 5FB3CE6C 5FBD44BC 3'
print(repr(data))
b'2 A Unassigned 5FADD9BF 5FBEB461 1C34 18 FtpC1: xml upload failed 5FB3CE6C 5FBD44BC 3'
尝试类似以下内容
data = b'2 A Unassigned 5FADD9BF 5FBEB461 1C34 18 FtpC1: xml upload failed 5FB3CE6C 5FBD44BC 3'
data += b' ' # pad end with a blank
n, data = data.split(b' ', 1)
n = int(n, 16)
for i in range(n):
length, data = data.split(b' ', 1)
length = int(length, 16)
description = data[:length]
data = data[length +
1:] # skip description and the blank after description
ts1, ts2, data = data.split(b' ', 2)
ts1, ts2 = map(lambda s: int(s, 16), (ts1, ts2))
counter, data = data.split(b' ', 1)
counter = int(counter, 16)
print((i, description, ts1, ts2, counter))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句