Python CRC32连续运算

Python CRC32 continuous computation

了解使用内置函数进行 CRC32 计算的最简单方法是 zlib。例如:

import zlib
zlib.crc32('hello-world')

但是,如果我想从文件中读取一个 32 位字 (0x89abcdef) 并且该文件包含数百万个 32 位字怎么办?

如果我逐行读取,如何保留之前的计算结果并用它继续下一行的CRC32计算,直到得到最终的计算结果?

此外,我不确定另一种方法是将这几百万行合并为一个超长单词,然后将其输入 zlib crc32 函数吗?

哪个是实现此目标的最佳方法?

Python 的 zlib.crc32() 有一个可选的第二个参数,即 运行 CRC-32。您可以像这样计算一系列块的 CRC:

crc = zlib.crc32(chunk1, 0)
crc = zlib.crc32(chunk2, crc)
...
crc = zlib.crc32(chunkn, crc)

现在 crcchunk1chunkn 串联的 CRC-32。