我正在尝试编写一个小包解析器,第一次使用 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 更清晰。
<
不能在格式字符串的中间,它需要在前面。
它指定 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)
要将四个字节解释为一个无符号整数,请使用I
或L
:
>>> struct.unpack("<BBIHBB", packet[:10])
(126, 3, 268435455, 30, 16, 1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句