我想使用struct并打包一个字符串和一个数字。 所以我看到的格式是' 10s' 10个字节, 但是如果我想要任何其他长度的字符串,我该如何写? 我不能告诉它10.我应该以格式写什么? 有办法做这个动态吗?
packed=struct.pack('i10s',1,"abaBaabb");
感谢
编辑:
如果我不知道我得到的包的大小 - 只是它是int int和string .. 如何写unpack:
id, data= struct.unpack_from('is' ,message,0)
只会获得一个字符 但如果我写:
id, data= struct.unpack_from('i500s' ,message,0)
因为我知道它将持续到500字节 如果字符串较小则会出错。
我该怎么办?
或 - 如何获得以下0 \ 00 \ 00 \ 00 \ 0的芦苇:
abcabcabcabcabcabcabcabcabcabcabcabc abcabcabcabcabcabcabcabcabcabcabcabc \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00
如果我得到这样的字符串?
答案 0 :(得分:1)
最简单的方法是动态计算格式字符串:
struct.pack("%ss" % 3, "xyz")
foo = "bar"
struct.pack("%ss" % len(foo), foo)