将struct.pack与字符串一起使用

时间:2014-02-12 11:13:14

标签: python struct

我正在尝试使用struct.pack,所以我可以将一个字符串写入文件。当我这样做时,我收到以下错误:

File "----", line 166, in main
struct.pack('>256s', *master_header)
struct.error: pack expected 1 items for packing (got 256)

现在,从here开始,我似乎正在使用它。我指定我的字符串中有256个字节/字符。

我使用的是版本3.3.3。

1 个答案:

答案 0 :(得分:1)

documentation说:

  

对于's'格式字符,计数被解释为。的大小   字符串,而不是其他格式字符的重复计数;   例如,'10s'表示单个10字节字符串,而'10c'表示10   字符。

因此,>256s需要一个256字节长的字符串。如果master_header已经是这样的字符串,只需将其传递给struct.pack而不使用*

在调用站点使用*会导致字符串本身被解压缩为其组成字符,字符串是可迭代的。结果,struct.pack接收其256个单独的字符作为参数,导致观察到的错误。