#解决print函数自带的换行效果
from __future__ import print_function
#data : 0-255
#poly : 多项式
#BigFirst : 大小端,1:高位在前,0:高位在后
def CalCulateCrc(data, poly, BigFirst):
crc = 0
crc ^= data
if BigFirst == 1:
for i in range(0, 8):
if crc & 0x80 == 0x80:
crc = (crc << 1) ^ poly
else:
crc <<= 1
if BigFirst == 0:
for i in range(0, 8):
if crc & 0x01:
crc = (crc >> 1) ^ poly
else:
crc = (crc >> 1)
return crc
#调用CalCulateCrc在控制台打印出对照表
def CreatTable():
a = range(256)
for i in range(0, 256):
crc1 = (CalCulateCrc(i, 0x1D, 1)) & 0xff
a[i] = crc1
print("{")
for j in range(0, 256):
print("%#.2X" % a[j], end=', ')
if(j + 1) % 16 == 0:
print()
print("};")
CreatTable()
在嵌入式的项目中经常碰到CRC校验的功能,多数的时候都是使用查表法进行CRC校验,查表法的表只和多项式的值有关系,因此可以使用通用的程序将表格产生出来