2

我有用于获取数据包的 while 循环

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

此行抛出异常

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

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

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

4

1 回答 1

2

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

python 不会抱怨切片,它只是返回一个小于您预期的字符串。例如:

print len("foo"[:500])  #3
print "foo"[:500]       #foo
于 2012-12-20T14:26:13.193 回答