Я пытался научить себя Python, поэтому я не совсем понимаю, что я делаю. Я смущен, чтобы сказать это, но на мой вопрос должно быть очень легко ответить. Я хочу быть в состоянии сделать CRC контрольных сумм двоичных файлов с кодом, аналогичным образом:Вычислить хэш/контрольную сумму CRC/CRC32 в двоичном файле в Python с использованием буфера
# http://upload.wikimedia.org/wikipedia/commons/7/72/Pleiades_Spitzer_big.jpg
import zlib
buffersize = 65536
with open('Pleiades_Spitzer_big.jpg', 'rb') as afile:
buffr = afile.read(buffersize)
while len(buffr) > 0:
crcvalue = zlib.crc32(buffr)
buffr = afile.read(buffersize)
print(format(crcvalue & 0xFFFFFFFF, '08x'))
Правильный результат должен быть «a509ae4b», но результат моего кода является «dedf5161». Я думаю, что происходит то, что контрольная сумма вычисляется либо в первом, либо в последнем 64 КБ файла вместо всего файла.
Как код должен быть изменен, чтобы он проверял весь файл без загрузки всего файла в память?
Как бы то ни было, код «работает» в Python 2.x или 3.x. Если у кода есть, чтобы быть в этом или нет, я бы предпочел, чтобы он был в 3.x.
Я прочитал это в документах Python, но не понял его достаточно хорошо, чтобы заставить код работать. Спасибо, много! –