如何在Python中计算出mpeg2/crc32?

How can calculate mpeg2/crc32 in Python?

我有下面的crc32码。

  1. 我需要编辑这段代码来计算 MPEG-2 CRC-32,使用 多项式 0x04C11DB7、初始值 0xffffffff 和最终值 与 0x00000000.
  2. 异或
  3. 我需要计算特定范围的 CRC,比如从偏移量 0x00x1000.
  4. 什么是:buffersize = 65536,我什么时候可以更改它?

import zlib
buffersize = 65536
with open('file', 'rb') as afile:
    buffr = afile.read(buffersize)
    crcvalue = 0
    while len(buffr) > 0:
        crcvalue = zlib.crc32(buffr, crcvalue)
        buffr = afile.read(buffersize)
print(format(crcvalue & 0xffffffff, '08x'))

对于#1:

def crc32mpeg2(buf, crc=0xffffffff):
    for val in buf:
        crc ^= val << 24
        for _ in range(8):
            crc = crc << 1 if (crc & 0x80000000) == 0 else (crc << 1) ^ 0x104c11db7
    return crc

替换 zlib.crc32(),后者计算不同的 32 位 CRC。此外初始值不为零,所以从 crcvalue = crc32mpeg2(b'').

开始