crc校验失败的解决办法
CRC校验码是基于将位串看作是系数为0或1的多项式,一个k位的数据流可以看作是关于x的从k-1阶到0阶的k-1次多项式的系数序列。采用此编码,发送方和接收方必须事先商定一个生成多项式G(x),其高位和低位必须是1。要计算m位的帧M(x)的校验和,基本思想是将校验和加在帧的末尾,使这个带校验和的帧的多项式能被G(x)除尽。当接收方收到加有校验和的帧时,用G(x)去除它,如果有余数,则CRC校验错误,只有没有余数的校验才是正确的。
CRC校验
对应关系
多项式和二进制数有直接对应关系:X的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:X的最高幂次为R,转换成对应的二进制数有R+1位。
多项式包括生成多项式G(X)和信息多项式C(X)。
如生成多项式为G(X)=X4+X3+X+1, 可转换为二进制数码11011。
而发送信息位 101111,可转换为数据多项式为C(X)=X5+X3+X2+X+1。
生成多项式
是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。
在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接收方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。
应满足以下条件:
A、生成多项式的最高位和最低位必须为1。
B、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0。
C、不同位发生错误时,应该使余数不同。
D、对余数继续做除,应使余数循环。
校验码位数
CRC校验码位数 = 生成多项式位数 - 1。注意有些生成多项式的简记式中将生成多项式的最高位1省略了。
生成步骤
1、将X的最高次幂为R的生成多项式G(X)转换成对应的R+1位二进制数。
2、将信息码左移R位,相当于对应的信息多项式C(X)*2R。
3、用生成多项式(二进制数)对信息码做除,得到R位的余数(注意:这里的二进制做除法得到的余数其实是模2除法得到的余数,并不等于其对应十进制数做除法得到的余数。)。
4、将余数拼到信息码左移后空出的位置,得到完整的CRC码。
CRC校验错误的解决方法
办法一:
WinRAR本身就带有压缩包修复功能。双击打开要解压的winrar压缩包文件,点击菜单“工具”下的“修复压缩文件”即可,快捷键是“ALT+R”。此法可修复一部分压缩包的常规错误,但是成功率不高。你可以试着连续修复几次。WinRAR的这个功能对压缩包里有很多文件且文件容量都比较小的情况比较适用。
办法二:
双击打开要解压的winrar压缩包文件(不是解压,而是用WinRAR打开),选中你要解压缩的文件,单击鼠标右键,在弹出的菜单里选择“无需确认直接解压缩”,快捷键是“ALT+W”。用此方法,不管是好的压缩包还是坏的压缩包,统统畅行无阻,成功率100%!
办法三:釜底抽薪法!
其原理就是让RAR压缩包内损坏的文件解压缩出来,不理会WinRAR的警告,能解压多少就解压多少。解压缩软件还是用WinRAR,不过要做小小的设置,鼠标右键点击要解压缩的文件包,依次选择:winrar - 解压文件(A) ,在解压路径和选项卡中勾选“保留损坏的文件”复选框,点击确定开始解压缩。不要理会解压缩出错的信息,解压缩结束之后你会发现损坏的文件被解压出来了。经过这样解压出来的损坏文件能正常使用的几率还是非常高的。
预防工作很重要:
其实RAR压缩包出错的解决方法主要是以预防为主!如果没有预防,等到真正出了问题,技术上也是没办法完美解决的!像循环冗余校验码(CRC)出错这种情况,如果RAR压缩包不包含恢复记录的话,用户自己想要修复CRC是不可能的!本文的主要目的是想告诉大家一些出错的原因以及讨论一些从根本上预防出错和把损失减少到最小的办法而已! 预防措施:1.做好恢复记录
原始RAR压缩包在压缩时,如果选择放置恢复记录,这样用户下载后即使CRC出错也有自己修复的机会!2.采取分卷压缩
采取分卷压缩的方法便可较大地减少因为出现不可恢复的错误带来的损失。3.老文件也加恢复记录
有人也许会问,新压缩的RAR压缩包可以加入恢复记录,那么已经压缩过的RAR包有没有办法也加上恢复记录呢?给已经压缩好的RAR压缩包加上恢复纪录是有办法的,只需要打开压缩包,在“命令”菜单中选择“保护压缩文件防止损害”即可。 在“资源管理器”中右击一个文件,选择Winrar→“添加到压缩文件”后,在打开的“压缩文件名和参数”窗口中选中“添加恢复记录”复选框,再单击“高级”标签,在这里即可设置以压缩文件总大小为准的百分比,其最大允许值为10%。较大的恢复记录允许连续损坏时更多的恢复可能,但同时也增加了压缩文件的大小,因此1~3%是较为合适的数值(目前国际上通用的设置为3%)。最后单击“确定”按钮压缩所选文件。
这样压缩出来的压缩包就带有了CRC32校验信息,一旦在解压过程中出现“CRC校验失败,文件被破坏”的提示,我们便可以通过点击winrar软件工具栏里的修复工具按钮来修复文件。
上一篇:二进制怎么算 二进制算法