crc32库 qt_CRC32为例详细解析(菜鸟至老鸟进阶)

CRC-知识解析 cyclic redundancy check

写在前面的话:

之前在做学校项目的时候用到了CRC 原理,但在网上查找的过程中,发现讲解CRC知识的资源很多,但是对新手比较友好的、讲的十分清楚的又很少,很多博主也不求甚解,弄得读起来心中常常不由自主地奔腾过上千个“为什么”“为什么”, 本文是我在阅读了许多资料的基础上整理、解析出来的文章,尽可能的对新手友好、解答CRC里面的一些知识点,而不是简单的应用。

依据学习目的不同,如果大家只想简单应用,不求原理,那么直接复制--粘贴最后的代码即可。

-----------------------------------------------------------------------这是一条华丽的分界线-----------------------------------------------------------------------------------------

1. CRC 算法原理

在对信息的处理过程中,我们可以将要被处理的数据块M看成一个n阶的二进制多项式,其形式如下:

CRC校验就是基于这种多项式进行的运算,以GF(2)(The integers modulo 2)多项式算术为数学基础,即(模-2)除法的余数运算(其实说白了就是异或Xor(见2.2)),使用的除数不同,CRC的类型也就不一样。CRC传输实际上就是在长度为k 的数据后面添加供差错检测(Frame Check Sequence) 用的r位冗余码(Redundant code 没错CRC里面的R就是这个),使原数据构成n = k + r位并发送出去,此方式又叫(n, k)码。可以证明存在一个最高次幂为n-k=r的多项式G(x),根据G(x)可以生成k位信息的校验码,而G(x)叫做这个CRC码的生成多项式( Poly )。而根据k值的不同,就形成了不同的CRC码的生成多项式,以下为各种常用的多项表达式:

这些多项表达式的值便是(模-2)除法的除数,本博客这里选取CRC-32多项式(即为对应除数)格式,通过取余做操,获取CRC检验码。

2. CRC 传输过程

2.1 传输原理

按1. CRC算法原理所述,将长度为k 位的数据块对应一个GF(2)多项式M,以8位数据块1

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值