1 / 4
文档名称:

CRC校验C语言实现.docx

格式:docx   大小:12KB   页数:4页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

CRC校验C语言实现.docx

上传人:青青松松 2022/1/16 文件大小:12 KB

下载得到文件列表

CRC校验C语言实现.docx

文档介绍

文档介绍:CRC校验 C 语言实现
CRC 校验 C 语言实现
CRC 校验 C 语言实现,转载请注明出处,谢谢
CRC(Cyclic Redundancy Check)校验应用较为广泛,以前为
CRC校验 C 语言实现
CRC 校验 C 语言实现
CRC 校验 C 语言实现,转载请注明出处,谢谢
CRC(Cyclic Redundancy Check)校验应用较为广泛,以前为
了处理简单,在程序中大多数采用 LRC(Longitudinal Redundancy
Check)校验, LRC校验很好理解,编程实现简单。用了一天时间
研究了 CRC 的 C 语言实现,理解和掌握了基本原理和 C 语言编
程。结合自己的理解简单写下来。
1、 CRC简介
CRC 检验的基本思想是利用线性编码理论, 在发送端根据要
传送的 k 位二进制码序列, 以一定的规则产生一个检验码 r 位 (就
是 CRC 码),附在信息后面,构成一个新的二进制码序列数共 (k+r)
位,最后发送出去。接收端根据同样的规则校验,以确定传送中
是否出错。接收端有两种处理方式: 1、计算 k 位序列的 CRC 码,
与接收到的 CRC比较,一致则接收正确。 2、计算整个 k+r 位的
CRC 码,若为 0,则接收正确。
CRC 码有多种检验位数, 8 位、16 位、32 位等,原理相同。
16 位的 CRC码产生的规则是先将要发送的二进制序列数左移 16
位(即乘以 2 的 16 次方后),除以一个多项式, 最后所得到的余
数就是 CRC码。
求 CRC 码所采用的是模 2 运算法则,即多项式除法中采用不带借位的减法运算, 运算等同于异或运算。 这一点要仔细理解,是编程的基础。
CRC-16: ( 美国二进制同步系统中采用 ) G(X) = X16 + X15 + X2+1
CRC-CCITT: (由欧洲 CCITT 推荐 ) G(X) = X16 + X12 + X5 + 1
CRC-32: G(X) = X32 + X26 + X23 + X22 + X16 +X12 + X11
X10+X8+X7+X5+X4+X2+X1+1 2、按位计算 CRC
采用 CRC-CCITT 多项式,多项式为 0x***** ,C 语言编程时,
参与计算为 0x1021,这个地方得深入思考才能体会其中的奥妙,
分享一下我的思路:当按位计算

CRC

时,例如计算二进制序列
为*****

时,将二进制序列数左移

16 位,即为 ***** (*****)

,实际
上该二进制序列可拆分为 ***** (*****) + 000 0000 0000 0000
(*****) + 00 0000 0000 0000 (**