Skip to content

Commit 886e80c

Browse files
author
Kazuki Suzuki Przyborowski
authored
Update pyarchivefile.py
1 parent f19938a commit 886e80c

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

pyarchivefile.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1666,6 +1666,17 @@ def SevenZipFileCheck(infile):
16661666
# initial_value can be 0xFFFF or 0x0000
16671667

16681668

1669+
def crc_calculate(msg, poly, initial_value, bit_length):
1670+
"""Generic CRC calculation function."""
1671+
crc = initial_value
1672+
for byte in msg:
1673+
crc ^= byte << (bit_length - 8)
1674+
for _ in range(8):
1675+
crc = (crc << 1) ^ poly if crc & (1 << (bit_length - 1)) else crc << 1
1676+
crc &= (1 << bit_length) - 1
1677+
return crc
1678+
1679+
16691680
def crc16_ansi(msg, initial_value=0xFFFF):
16701681
# CRC-16-IBM / CRC-16-ANSI polynomial and initial value
16711682
poly = 0x8005 # Polynomial for CRC-16-IBM / CRC-16-ANSI

0 commit comments

Comments
 (0)