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