我如何在struct.pack中打包一个字符串

时间:2018-10-30 20:07:09

标签: python

我正在尝试使用struct.pack打包一个字符串。 如果使用整数类型,我可以看到完整的值,但是当我要使用字符串时,我只能看到一个字符。

struct.pack("<1L",0xabcdabcd)
'\xab\xcd\ab\cd'
struct.pack("<1s","overflow")
'o' prints just s. I wanted it to print full string: overflow.

1 个答案:

答案 0 :(得分:1)

在要传递给"<1s"的格式字符串(struct.pack)中,1表示字段可以存储的最大字符数。 (请参阅the struct documentation中“对于's' ...”开头的段落。)由于传递的是1,因此它将仅存储第一个字符。您需要选择一个适合您要存储在结构中的任何字符串的长度,然后指定该长度。例如,要存储字符串“ overflow”(8个字符),可以使用"<8s"

>>> struct.pack("<8s", "overflow")
'overflow'