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)
现在 crc
是 chunk1
到 chunkn
串联的 CRC-32。
了解使用内置函数进行 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)
现在 crc
是 chunk1
到 chunkn
串联的 CRC-32。