您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>电子百科>电脑硬件>台式机>

crc校验原理_怎样修复crc校验错误

2012年09月05日 09:26 本站整理 作者:秩名 用户评论(0

crc校验原理
利用CRC进行检错的过程可简单描述为:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息后边,构成一个新的二进制码序列数共k+r位,然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则,在差错控制理论中称为“生成多项式”。
代数学的一般性算法
在代数编码理论中,将一个码组表示为一个多项式,码组中各码元当作多项式的系数。例如 1100101 表示为
1•x6+1•x5+0•x4+0•x3+1•x2+0•x+1,即 x6+x5+x2+1。
设编码前的原始信息多项式为P(x),P(x)的最高幂次加1等于k;生成多项式为G(x),G(x)的最高幂次等于r;CRC多项式为R(x);编码后的带CRC的信息多项式为T(x)。
发送方编码方法:将P(x)乘以xr(即对应的二进制码序列左移r位),再除以G(x),所得余式即为R(x)。用公式表示为
T(x)=xrP(x)+R(x)
接收方解码方法:将T(x)除以G(x),如果余数为0,则说明传输中无错误发生,否则说明传输有误。(G(x)是变量,可根据用户的需要自行设计,但好坏区别,一般位数与数据长度相等,首位和末位为1)
举例来说,设信息码为1100,生成多项式为1011,即P(x)=x3+x2,G(x)=x3+x+1,计算CRC的过程为
xrP(x) =x3(x3+x2) =x6+x5     左移三位
G(x) =x3+x+1 即 R(x)=x。
注意到G(x)最高幂次r=3,得出CRC为010。
如果用竖式除法,计算过程为(用异或计算)以G(x)为准,左移它的最高次位(r)再除以它本身求余可得可得一个的位的CRC码
1100000/1011 =111000/1011 =10100/1011=010(校验码)
因此,T(x)=(x6+x5)+(x)=x6+x5+x, 即 1100000+010=1100010
如果传输无误,T(x) x6+x5+x ------ = --------- = x3+x2+x, G(x) x3+x+1无余式。回头看一下上面的竖式除法,如果被除数是1100010,显然在商第三个1时,就能除尽。
上述推算过程,有助于我们理解CRC的概念。但直接编程来实现上面的算法,不仅繁琐,效率也不高。实际上在工程中不会直接这样去计算和验证CRC。
下表中列出了一些见于标准的CRC资料:

生成多项式的最高幂次项系数是固定的1,故在简记式中,将最高的1统一去掉了,如04C11DB7实际上是104C11DB7。 ** 前称CRC-CCITT。ITU的前身是CCITT。
备注:
(1)生成多项式是标准规定的
(2)CRC校验码是基于将位串看作是系数为0或1的多项式,一个k位的数据流可以看作是关于x的从k-1阶到0阶的k-1次多项式的系数序列。采用此编码,发送方和接收方必须事先商定一个生成多项式G(x),其高位和低位必须是1。要计算m位的帧M(x)的校验和,基本思想是将校验和加在帧的末尾,使这个带校验和的帧的多项式能被G(x)除尽。当接收方收到加有校验和的帧时,用G(x)去除它,如果有余数,则CRC校验错误,只有没有余数的校验才是正确的。
CRC说了那么多实则是用一个规定的多项式(假设最高次是r,当然包含r+1位)把要发送的数据左移r位后,再去除那个多项式,当然会得到一个余数(设为r(x),)那么这个余数是r位的二进制数。最后把它填充到数据移出的空位上去,这样变可以发送了,至于发送了几位接收了几位的细节问题自己考虑好了。

修复crc校验错误
当我们在解压RAR时,提示“CRC校验失败,文件被破坏”,那么这个时候我们要怎么处理呢,有没有办法可以解决,怎么修复crc校验错误?下面看一下有什么方法。
办法一:WinRAR本身就带有压缩包修复功能。点击菜单“工具”下的“修复压缩文件”即可,快捷键是“ALT+R”。此法可修复一部分压缩包的常规错误,但是成功率不高。你可以试着连续修复几次。WinRAR的这个功能对压缩包里有很多文件且文件容量都比较小的情况比较适用。
办法二: 打开压缩包(不是解压,而是用WinRAR打开),选中你要解压缩的文件,单击鼠标右键,在弹出的菜单里选择“无需确认直接解压缩”,快捷键是“ALT+W”。用此方法,不管是好的压缩包还是坏的压缩包,统统畅行无阻,成功率100%!
办法三:釜底抽薪法!其原理就是让RAR压缩包内损坏的文件解压缩出来,不理会WinRAR的警告,能解压多少就解压多少。解压缩软件还是用WinRAR,不过要做小小的设置。

在右键点击解压缩文件后跳出的窗口里,把“保留被损坏的文件”复选框选中,点击确定开始解压缩。不要理会解压缩出错的信息,解压缩结束之后你会发现损坏的文件被解压出来了。经过这样解压出来的损坏文件能正常使用的几率还是非常高的。
以上几点,可以使一些破损的文件得到恢复,但也不是百分之百有用的。但大部份还是可以用的。希望以上对大家能有所帮助。

  CRC校验相关文章:

  CRC校验原理及推导过程

  crc校验方法及示例

非常好我支持^.^

(637) 40.1%

不好我反对

(952) 59.9%

( 发表人:姚远香 )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!