python struct解包坏字符

库尼尔

我正在尝试编写一个小包解析器,第一次使用 python 结构:

content = struct.unpack("BBBBBB<HBB", packet[:10])

数据包包含以下字节:

7e03 ffff ff0f 1e00 1001 0c00 0000 0000

我收到此错误:struct.error: bad char in struct format但我不知道我应该如何知道提到的坏字符是什么。还要注意的是:结构是否支持对元组元素进行分组,因为我宁愿像这样进行解包:

content = struct.unpack("BB(BBBB)<HBB", packet[:10])

因为这是一个地址,并且将它放在自己的内容元组中会使 imo 更清晰。

mkrieger1

< 不能在格式字符串的中间,它需要在前面。

它指定 little-endian 字节顺序并应用于整个数据包(但对于像 指定的那些单字节值没有区别B):

>>> packet = b'\x7e\x03\xff\xff\xff\x0f\x1e\x00\x10\x01\x0c\x00\x00\x00\x00\x00'
>>> struct.unpack("<BBBBBBHBB", packet[:10])
(126, 3, 255, 255, 255, 15, 30, 16, 1)

要将四个字节解释为一个无符号整数,请使用IL

>>> struct.unpack("<BBIHBB", packet[:10])
(126, 3, 268435455, 30, 16, 1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章