用于CRC和校验和的计算库
crccheck的Python项目详细描述
crccheck.crc模块实现 Catalogue of parametrised CRC algorithms:
CRC-3/ROHC, CRC-4/ITU, CRC-5/EPC, CRC-5/ITU, CRC-5/USB, CRC-6/CDMA2000-A, CRC-6/CDMA2000-B, CRC-6/DARC, CRC-6/ITU, CRC-7, CRC-7/ROHC, CRC-8, CRC-8/CDMA2000, CRC-8/DARC, CRC-8/DVB-S2, CRC-8/EBU, CRC-8/I-CODE, CRC-8/ITU, CRC-8/MAXIM, CRC-8/ROHC, CRC-8/WCDMA, CRC-10, CRC-10/CDMA2000, CRC-11, CRC-12/3GPP, CRC-12/CDMA2000, CRC-12/DECT, CRC-13/BBC, CRC-14/DARC, CRC-15, CRC-15/MPT1327, CRC-16, ARC, CRC-16/AUG-CCITT, CRC-16/BUYPASS, CRC-16/CCITT-FALSE, CRC-16/CDMA2000, CRC-16/DDS-110, CRC-16/DECT-R, CRC-16/DECT-X, CRC-16/DNP, CRC-16/EN-13757, CRC-16/GENIBUS, CRC-16/MAXIM, CRC-16/MCRF4XX, CRC-16/RIELLO, CRC-16/T10-DIF, CRC-16/TELEDISK, CRC-16/TMS37157, CRC-16/USB, CRC-A, CRC-16 CCITT, KERMIT, MODBUS, X-25, XMODEM, CRC-24, CRC-24/FLEXRAY-A, CRC-24/FLEXRAY-B, CRC-31/PHILIPS, CRC-32, CRC-32/BZIP2, CRC-32C, CRC-32D, CRC-32/MPEG-2, CRC-32/POSIX, CRC-32Q, JAMCRC, XFER, CRC-40/GSM, CRC-64, CRC-64/WE, CRC-64/XZ, CRC-82/DARC.
对于类名,只需删除上述名称中的所有虚线和斜线,然后应用camelcase,例如。 “crc-32/mpeg-2”由Crc32Mpeg2实现。其他的crc可以通过使用一般类来计算 crccheck.crc.Crc通过提供所有必需的crc参数。
crccheck.checksum模块使用8、16和32位实现加法和异或校验和: ^{TT5}$,^{TT6}$,^{TT7}$和^{TT8}$,^{TT9}$,^{TT10}$
用法示例:
from crccheck.crc import Crc32, CrcXmodem from crccheck.checksum import Checksum32 # Quick calculation data = bytearray.fromhex("DEADBEEF") crc = Crc32.calc(data) checksum = Checksum32.calc(data) # Procsss multiple data buffers data1 = b"Binary string" # or use .encode(..) on normal sring - Python 3 only data2 = bytes.fromhex("1234567890") # Python 3 only, use bytearray for older versions data3 = (0x0, 255, 12, 99) # Iterable which returns ints in byte range (0..255) crcinst = CrcXmodem() crcinst.process(data1) crcinst.process(data2) crcinst.process(data3[1:-1]) crcbytes = crcinst.finalbytes() crchex = crcinst.finalhex() crcint = crcinst.final()