CRC-8的解释请参考其他博主的文章,采用的是模2除法 (12条消息) 模2除法(CRC校验码计算)_一条积极的咸鱼的博客-CSDN博客_模二除法 先直接看CRC校验代码:
将多项式用key参数化(CRC-8习惯将多显示转化后的16进制数据首位“1”不显示,在本函数中需要写入完整的数据),待校验数命名为value,需要保证两个参数为16进制
经过迭代最终输出校验结果。
def CRC_8(value, key): # keep inputs as hex
value = str(bin(int(value, 16)))[2:]
key = str(bin(int(key, 16)))[2:]
print("value="+value+'\n'+"key="+key)
value = value + "0" * 8
while len(value) >= 9:
if value[0] == '0':
value = value[1:]
else:
value = list(value)
for i in range(len(key)):
if value[i] == key[i]:
value[i] = '0'
else:
value[i] = '1'
value = ''.join(value)
print(value)
print(hex(int(value,2)))
if __name__ == '__main__':
CRC_8(value='1',key='107')