循环冗余校验码(CRC),简称循环码,是一种常用的、具有检错、纠错能力的校验码,在早期的通信中运用广泛。循环冗余校验码常用于外存储器和计算机同步通信的数据校验。奇偶校验码和海明校验码都是采用奇偶检测为手段检错和纠错的(奇偶校验码不具有纠错能力),而循环冗余校验则是通过某种数学运算来建立数据位和校验位的约定关系的。
--百度百科
在数据通讯的过程中,难免会出现误码的现象。因此,CRC校验常常用来检测该数据包中的数据是否正确以及完整。
本文主要讲述三种CRC16校验的C语言实现方式,实际项目中可以根据相关需求任选一种
运行结果
bit: 35267
halfbyte: 35267
byte: 35267
三种算法在计算结果上是完全相同的
按位运算:运算效率相对较低,但是对内存需求较低,适用于程序空间苛刻但CRC计算速度要求不高的微控制系统。
按字节运算:运算效率较高,但是对内存需求也比较高,适用于程序空间较大且CRC计算速度要求较高的计算机或微控制系统。
半字节运算:属于按位运算与按字节运算的折中方案,相对而言,它的计算效率一般,对内存的需求也一般,适用于程序空间不太大且CRC计算速度又不可以太慢的微控制系统。
实际开发过程中,可以依据三种运算方式的特性,自行选择
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/2461.html