我一直在努力自学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中
当前只计算文件最后一个块的CRC。为了将此传递电流} 作为起始值:
crcvalue
固定为^{以下是Python文档中的相关部分:
相关问题 更多 >
编程相关推荐