struct.error:当我想使用struct.pack时,struct格式的char不好

问题描述

我想打包我的数据以通过套接字发送它。

我做到了。

sensor = b'cam' 
msg = struct.pack('3s >I >I',sensor,len(channel),len(inf_bytes)) + channel + inf_bytes ```


And the I got: struct.error: bad char in struct format
Could you tell me where I am wrong?

解决方法

仅格式字符串中的第一个字符可以是>,以使用big-endian:

>>> struct.pack('3s>I>I',b'A',2,3)
Traceback (most recent call last):
File "<stdin>",line 1,in <module>
struct.error: bad char in struct format

>>> struct.pack('>3sII',3)
b'A\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03'

医生说:(强调我)

默认情况下,C类型以计算机的本机格式和字节顺序表示,并在必要时通过跳过填充字节来正确对齐(根据C编译器使用的规则)。 另外,根据下表,格式字符串的第一个字符可用于指示打包数据的字节顺序,大小和对齐方式:

https://docs.python.org/3/library/struct.html#struct-format-strings