2

パケットを取得するためのwhileループがあります

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

この行は例外をスローします

Unpack には長さ 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 に答える