Python实现ANSI CRC16校验算法

目录

一、循环冗余校验(CRC)算法

二、代码实现

三、总结


一、循环冗余校验(CRC)算法

循环冗余校验(CRC)算法是一种广泛应用于数据传输和存储中的错误检测方法。它通过利用多项式除法及余数的原理,对传输或存储的数据进行校验,以确保数据的完整性和准确性。CRC16是CRC算法中的一种常见标准,例如ANSI CRC16。CRC16 码由传输设备计算后加入到数据包中。接收设备重新计算接收数据包的CRC16码,并与接收到的CRC16码比较,如果两值不同,则有误,可据此判断数据在传输过程中是否出现错误。

CRC16校验字节的生成步骤如下:

1) CRC16 校验寄存器赋值为0xFFFF;
2) 取被校验串的第一个字节赋值给临时寄存器;
3) 临时寄存器与CRC16 校验寄存器的高位字节进行“异或”运算,赋值给CRC16 校验寄存器;
4) 取CRC16 校验寄存器最后一位赋值给检测寄存器;
5) 把CRC16 校验寄存器右移一位;
6) 若检测寄存器值为1,CRC16 校验寄存器与多项式0xA001 进行“异或”运算,赋值给CRC16
校验寄存器;
7) 重复步骤4~6,直至移出8 位;
8) 取被校验串的下一个字节赋值给临时寄存器;
9) 重复步骤3~8,直至被校验串的所有字节均被校验;
10) 返回CRC16 校验寄存器的值。
校验码按照先高字节后低字节的顺序存放。

二、代码实现

def cyclic_redundancy_check(data):
    crc = 0xFFFF
    for byte in data:
        crc = (crc >> 8) ^ byte
        for _ in range(8):
            if crc & 1 == 1:
                crc = (crc >> 1) ^ 0xA001
            else:
                crc >>= 1
    return '{:04X}'.format(crc)

data = "QN=20240228125418352;ST=91;CN=9014;PW=123456;MN=KSHQTR20200004;Flag=4;CP=&&&&"
print(cyclic_redundancy_check(data.encode('utf-8')))
#计算结果:5440

三、总结

之所以用到ANSI CRC16校验算法,主要是用于对物联设备的传感数据进行可靠性验证,提高数据传输的可靠性和准确性。

相关推荐

  1. Python实现ANSI CRC16校验算法

    2024-03-20 18:00:03       22 阅读
  2. Python实战开发及案例分析(16)—— 遗传算法

    2024-03-20 18:00:03       8 阅读
  3. python实现回溯算法

    2024-03-20 18:00:03       21 阅读
  4. 贪婪算法python实现

    2024-03-20 18:00:03       16 阅读
  5. CRC校验(FPGA实现

    2024-03-20 18:00:03       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-20 18:00:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-20 18:00:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-20 18:00:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-20 18:00:03       18 阅读

热门阅读

  1. JNI入门学习 对象,接口回调

    2024-03-20 18:00:03       18 阅读
  2. 2024最新华为OD机试试题库全 -【执行时长】- C卷

    2024-03-20 18:00:03       22 阅读
  3. 为什么守护网络安全需要用高防IP

    2024-03-20 18:00:03       18 阅读
  4. linux网络常用命令

    2024-03-20 18:00:03       18 阅读
  5. 力扣每日练习(3.16)补

    2024-03-20 18:00:03       22 阅读
  6. Postgresql数据库导入导出

    2024-03-20 18:00:03       24 阅读
  7. AI时代能学会用——办公效能提升术

    2024-03-20 18:00:03       17 阅读
  8. Hive函数 date_format 使用示例总结

    2024-03-20 18:00:03       19 阅读