我一直在尝试自学Python,所以不是很理解我在做什么。很不好意思,但我的问题应该很容易回答。我想用类似于这样的代码在二进制文件上执行CRC校验和:
# 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"。我认为问题出在校验和是在文件的第一个或最后64kb上计算而不是整个文件上计算。如何修改代码以检查整个文件而不将整个文件加载到内存中?目前代码在Python 2.x或3.x中都可以“工作”。如果必须选择其中之一,我更喜欢使用3.x版本的Python。