多くのファイルにゼロブロックがあるかどうかを確認する最も早い方法は何ですか?ブロックは、32000バイトのゼロより大きくする必要があります。 次のコードは遅くすることです:ファイル内で32KBを超えるゼロブロックを検出する
empty_blocks = []
min_length = 32000
block = False
begin = -1
data = open(file_name,'rb').read()
for i,byte in enumerate(data):
byte = ord(byte)
if byte == 0x00 and block == False:
block = True
begin = i
elif byte != 0x00 and block == True:
block = False
if length >= min_length:
empty_blocks.append((begin, i - begin))
begin = -1
ブロックには、どの整列要件も満たされている必要がありますか?アラインメントの要件が32kでない場合、重複はどうですか? – Flexo
ビットトレント同期プロトコルによって破損したファイル。私はビットトレントプロトコルが転送する最小のピースサイズが32kbであるという情報を得ました。ゼロブロックがn = 1,2,3,4、または32768より大きい値のn * 32kbであるかどうかはわかりません。 –