Python:解包一个字节字符串 - 第一个“部分”的各种长度

肯尼666

首先,这是我在这里的第一个问题,所以请耐心等待我;-)

连接到设备时,我收到一个字节字符串,其中包含不同数量的“条目”,我想对其进行解包/拆分。

结果的第一部分给出了总条目数,然后是所有条目,这些条目以空格分隔。由于每个条目的描述也可能有空格,因此描述的长度也以十六进制形式提供。

例如,这是一个包含 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获得字符串的第一个字符?

Python:获取列表中第一个字符串的第一个字符?

Python检查字符串的第一个和最后一个字符

删除字符串的第一个字符

是否只能获取字符串的第一个字符?

如果找到,则删除字符串中的第一个字符

为什么read()输出一个字节而不是一个字符串?

仅大写Python中的字符串的第一个字母

如何替换字符串中的第一个字符

Python中字符串的第一个字符

尝试打印字符串的第一个字符

替换python 3中的第一个字符串字符

Python在第一个字符后中断字符串

javascript字符串操作删除第一个字符

从一个字符串python块中获取第一个字符串/列

python pandas get列的第一个元素包含一个字符串

仅第一个字节将分配给字符串偏移警告

如何删除字符串的第一个字符[python]

在字符串的第一个字符之后插入字符?

根据第一个字符对字符串进行排序

在第一个字段中用awk替换字符串的一部分

Python 3.5 ctypes libc printf()仅打印字符串Windows 7/10的第一个字节

关联数组返回字符串的第一个字符

Python / Django-需要一个字符串或类似字节的对象

如果第一个字符为 0,则替换字符串的第一个字符

将字符串的第一个单词更改为第一个字母

解包第一个字节表示长度的数据结构

子字符串表示——长度或指向最后一个字节的指针?

比较python中字符串的第一个和最后一个字符