看了很多实现crx-16 验证的实现方式,实现过程都比较复杂,研究了一下发现,python有相应的crc包:crcmod。
import crcmod包后 实现比较简单,对于modubos等不同类型的crc验证,只需要更改crcmod.mkCrcFun内的参数即可。
代码如下:
(附crc在线验证:crc验证)
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File : crc16.py
@Modify Time @Author @Version @Desciption
------------ ------- -------- -----------
2021/3/8 9:02 zhangx 1.0 nariP 使用的是 CRC-16/IBM 算法 8005 False 0000 FFFF
CRC-MODBUS:8005 FFFF 0000 CRC-CCITT:1021 0000 0000
'''
from binascii import *