简述CRC16算法
创作时间:
作者:
@小白创作中心
简述CRC16算法
引用
1
来源
1.
https://www.jiamisoft.com/blog/34011-crc16.html
CRC16算法是一种常用的循环冗余校验算法,广泛应用于数据传输和存储的错误检测。本文将详细介绍CRC16算法的原理、计算过程及其各种变体,帮助读者深入了解这一重要的数据校验技术。
CRC16算法简介
CRC16算法使用16次方的多项式来生成校验和,该算法将数据视为一系列位,并对该序列执行位分割运算,使用多项式进行除法运算。这个除法的余数就是CRC16校验和,它被附加到原始数据的末尾。
CRC16算法的计算原理
- 根据CRC16的标准选择初值CRCIn的值。
- 将数据的第一个字节与CRCIn高8位异或。
- 判断最高位,若该位为 0 左移一位,若为 1 左移一位再与多项式Hex码异或。
- 重复3直至8位全部移位计算结束。
- 重复将所有输入数据操作完成以上步骤,所得16位数即16位CRC校验码。
CRC16算法的计算过程
- 预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为CRC寄存器;
- 把第一个8位二进制数据 (即通讯信息帧的第一个字节)与16位的CRC寄存器的第8位相异或,把结果放于CRC寄存器;
- 把CRC寄存器的内容右移一位(最低位)用0填补最高位,并检查右移后的移出位;
- 如果移出位为0:重复第3步(再次右移一位);如果移出位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;(Modbus)
- 重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;
- 重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;
- 将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换;
- 最后得到的CRC寄存器内容即为:CRC码。
CRC16算法的变体
CRC16算法有以下几种常见变体,它们算法原理基本一致,就是在数据的输入和输出有所差异:
- CRC16_CCITT:多项式x16+x12+x5+1(0x1021),初始值0x0000,低位在前,高位在后,结果与0x0000异或。
- CRC16_CCITT_FALSE:多项式x16+x12+x5+1(0x1021),初始值0xFFFF,低位在后,高位在前,结果与0x0000异或。
- CRC16_XMODEM:多项式x16+x12+x5+1(0x1021),初始值0x0000,低位在后,高位在前,结果与0x0000异或。
- CRC16_X25:多项式x16+x12+x5+1(0x1021),初始值0x0000,低位在前,高位在后,结果与0xFFFF异或。
- CRC16_MODBUS:多项式x16+x15+x2+1(0x8005),初始值0xFFFF,低位在前,高位在后,结果与0x0000异或。
- CRC16_IBM:多项式x16+x15+x2+1(0x8005),初始值0x0000,低位在前,高位在后,结果与0x0000异或。
- CRC16_MAXIM:多项式x16+x15+x2+1(0x8005),初始值0x0000,低位在前,高位在后,结果与0xFFFF异或。
- CRC16_USB:多项式x16+x15+x2+1(0x8005),初始值0xFFFF,低位在前,高位在后,结果与0xFFFF异或。
CRC16算法的应用
CRC16常用于通信协议中,当接收到数据时,接收器可以使用相同的算法计算自己的校验和,并将其与接收到的数据一起进行比较。如果两个校验和匹配,数据被认为是无误的。如果它们不匹配,就假定在传输过程中发生了错误,数据可能需要重新传输。
热门推荐
提升企业财务健康的关键:现金流量债务比解析
椰砖和营养土的区别,以及椰砖的使用方法及注意事项
股市历史上的重大事件回顾
打印机脱机状态怎么恢复正常打印?完整解决方案指南!
《寂寞空庭春欲晚》:权力与人性的交织
江南古镇攻略:十大必去景点+美食住宿全指南
历史上的庆恭皇贵妃:一代传奇后妃与她那不同寻常的后宫逆袭之路
成都一袭汉服课堂:古代四大美女,她们如何影响中国历史与传说
家庭观赏鱼养殖知多少:1厘米体长的鱼需要有1升水体与之相匹配
非遗文化的璀璨传承:莎车县十二木卡姆的魅力
自愿赠与能要回吗
新生儿护理全攻略:从生理现象到日常护理要点
去除脚上的鸡眼,用什么办法更好?
人工智能的兴起与未来:从理论到应用
花生油的营养价值与食用指南
威海二手房买卖市场调查与分析
一文带你了解古代武将的称号:杂号将军和重号将军以及他们的区别
汉朝将军的命名与职位高低
深入解析香港专才计划:如何抓住机会提升职业生涯
蜀道上的盛宴:大肉会的历史与传承
带佳字的女孩名字,用佳字起名
凯撒之死:罗马帝国崛起的催化剂
怎样算八字硬不硬 – 八字硬怎样解释
曲水亭街:家家泉水,户户垂杨
贺若弼渡江灭陈:南北朝时期的统一战略
佩戴义眼片时注意事项有哪些
4G内存装Win10吃力吗?解析性能与优化技巧
畜牧兽医专业详解:培养目标、就业方向及核心课程
甲醛污染:来源、危害与防治全攻略
永州血鸭:舌尖上的乡愁与山河