print("CRC-CCITT of '{}': {:04X}".format(data, crc_ccitt(data)))
# print("CRC-CCITT of '{}': {:04X}".format(data, crc_ccitt(data)))
def crc_ccitt(crc, input_data: bytes):
"""
Compute CRC-CCITT
args:
crc: initial value, usually 0 or 0xffff
input_data: bytes or bytearray data
return: int, CRC value
"""
polynomial = 0x1021
for byte in input_data:
mask = 0x80
while mask > 0:
crc <<= 1
if byte & mask:
crc ^= polynomial
mask >>= 1
if crc & 0x10000: # 如果高位为1, 则异或多项式
crc ^= polynomial
crc &= 0xFFFF # 保证结果为16位
return crc
def getDataFromFile(filename):
with open(filename, 'rb') as f:
data = f.read()
return data