我正在尝试打包字符串和字符串的长度。
fmt = '<P' + str(len(string)) + 'p'
这导致我出错:struct.error:struct format中的错误char 然而,做
fmt = 'P' + str(len(string))+'p'
不会给我一个错误。我无法理解为什么会发生这种情况,我的理解是指定'&lt;'无论本机如何,一开始都会使它成为小端。
答案 0 :(得分:1)
来自struct
模块docstring:
The remaining chars indicate types of args and must match exactly;
...
Special case (only available in native format):
P:an integer type that is wide enough to hold a pointer.
因此,当您使用P
格式时,无法修改字节顺序;它仅以原生格式提供。
另见备注5:https://docs.python.org/2/library/struct.html#format-characters
答案 1 :(得分:1)
“&LT;”将数据打包为小端,但它是通过使用“标准”对齐而不是计算机的本机规则来实现的。您可以在the struct module documentation找到该表。
正如Warren Weckesser所指出的那样,P格式不能修改其结尾,但如果你使用“&lt; i”代替,那将完全起作用。