本文用python实现crc16算法,crc算法包含两种:
1、直接计算法;
2、查表法。
本文以多项式x16 + x12 + x5 + x1 (0x1021)为例计算crc16,以下分别实现这两种方法:
1、直接计算法
直接计算法是根据多项式按位计算出crc16,方法直接,但是速度慢,以下为具体代码:
def crc16_direct(bytestr):
'''
crc16直接计算法
:param bytestr: bytes字符串
:return: int16类型
'''
crc = 0
if len(bytestr) == 0:
return 0
for i in range(len(bytestr)):
R = bytestr[i]
for j in range(8):
if R > 127:
k = 1
else:
k = 0
R = (R << 1) & 0xff
if crc > 0x7fff:
m = 1
else:
m = 0
if k + m == 1:
k = 1
else:
k = 0
crc