网上的有关CRC的原理和代码实现的文章,数不胜数,但比较全的好像还没看到;此文是集百家之智慧,加之自己的使用经验和理解汇聚此文,让你快速理解和使用CRC,当然不足之处欢迎评论区吐槽。
1. CRC是什么 ?
循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。
---- 来自百度百科
哦,他是生成一段数据包校验码的一种算法,用于发送和接收方的数据校验,减少数据帧出错概率;
那他的实现算法是什么样的,有统一的官方标准吗,还是有百花齐放? 有,有官方的算法标准
2. CRC标准算法
官方的标准算法链接还没找到,这里是汇聚网友的智慧,大家发的几乎都是这套,公认的应该就没错了,有找到的欢迎评论区留言。
CRC标准算法模型的几个参数:
-
宽度(width):校验码所占的比特位,比如我们常说的CRC16,宽度就是16;
-
多项式(poly):参与计算的一个常量数值;
-
初始值(init)