解包需要长度为44 python的字符串参数

时间:2012-12-20 14:21:45

标签: python tcp garbage-collection ip packet

我有获取数据包的while循环

unpackedData = struct.unpack("!BBHHHBBH4s4sHH4s4s4sHH4s", data[:44])

此行抛出异常

  

Unpack需要长度为44 python的字符串参数

但是在使用调试器之后我注意到它发生在几个循环之后,我认为它是因为缓存已经填满。

有没有办法清除python缓存或销毁对象或类似的东西?

1 个答案:

答案 0 :(得分:2)

我最好的猜测是,在你的while循环中,你每次将data字符串缩短44个字符,但是44不会均匀地划分你的原始字符串,所以在最后一次迭代你剩下一段长度小于44个字符的字符串。

python不会抱怨切片,它只返回一个小于你预期的字符串。 e.g:

print len("foo"[:500])  #3
print "foo"[:500]       #foo