如何在Python中计算出mpeg2/crc32?
How can calculate mpeg2/crc32 in Python?
我有下面的crc32码。
- 我需要编辑这段代码来计算 MPEG-2 CRC-32,使用
多项式
0x04C11DB7
、初始值 0xffffffff
和最终值
与 0x00000000
. 异或
- 我需要计算特定范围的 CRC,比如从偏移量
0x0
到
0x1000
.
- 什么是:
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'')
.
开始
我有下面的crc32码。
- 我需要编辑这段代码来计算 MPEG-2 CRC-32,使用
多项式
0x04C11DB7
、初始值0xffffffff
和最终值 与0x00000000
. 异或
- 我需要计算特定范围的 CRC,比如从偏移量
0x0
到0x1000
. - 什么是:
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'')
.