2024年5月3日发(作者:)
寄给朋友
请问CRC校验是什么意思,为什么我安装某个软件时,它提示“installercrcinvalid呢?怎样可以关闭呢?
---
作者:xyty
时间:2002-12-309:49:00来自:
我也不是很明白,不过着到如下信息,希望对你有帮助。CRC校验由于实现简单,检错能力强,被广泛使用在各种数据
校验应用中。占用系统资源少,用软硬件均能实现,是进行数据传输差错检测地一种很好的手段。
---
附件:循环冗余校验CRC的算法分析和程序实现.doc
问题的注释
作者:shock
时间:2002-12-3010:17:00来自:
正确指数:0
CRC的原理。
(由于CRC实现起来有一定的难度,所以具体怎样用它来保护文件,留待下一节再讲。)
首先看两个式子:
式一:9/3=3
式二:(9+2)/3=3
(余数=0)
(余数=2)
在小学里我们就知道,除法运算就是将被减数重复地减去除数X次,然后留下余数。
所以上面的两个式子可以用二进制计算为:(什么?你不会二进制计算?我倒~~~)
式一:
1001-->9
0011--->3
---------
0110-->6
0011--->3
---------
0011-->3
0011--->3
---------
0000-->0,余数
一共减了3次,所以商是3,而最后一次减出来的结果是0,所以余数为0
式二:
1011-->11
0011--->3
---------
1000-->8
0011--->3
---------
0101-->5
0011--->3
---------
0010-->2,余数
一共减了3次,所以商是3,而最后一次减出来的结果是2,所以余数为2
看明白了吧?很好,let’sgoon!
二进制减法运算的规则是,如果遇到0-1的情况,那么要从高位借1,就变成了(10+0)-1=1
CRC运算有什么不同呢?让我们看下面的例子:
这次用式子30/9,不过请读者注意最后的余数:
11110
1001-
---------
1100
1001-
--------
101
-->30
-->9
-->12
-->9
(很奇怪吧?为什么不是21呢?)
-->3,余数-->theCRC!
这个式子的计算过程是不是很奇怪呢?它不是直接减的,而是用XOR的方式来运算(程序员应该都很熟悉XOR吧),最
后得到一个余数。
对啦,这个就是CRC的运算方法,明白了吗?CRC的本质是进行XOR运算,运算的过程我们不用管它,因为运算过程对
最后的结果没有意义;我们真正感兴趣的只是最终得到的余数,这个余数就是CRC值。
进行一个CRC运算我们需要选择一个除数,这个除数我们叫它为“poly”,宽度W就是最高位的位置,所以我刚才举的例
子中的除数9,这个poly1001的W是3,而不是4,注意最高位总是1。(别问为什么,这个是规定)
如果我们想计算一个位串的CRC码,我们想确定每一个位都被处理过,因此,我们要在目标位串后面加上W个0位。现
在让我们根据CRC的规范来改写一下上面的例子:
Poly
位串Bitstring
Bitstring+Wzeroes
11110000
=
=
=
1001,宽度W=3
11110
11110+000=11110000
发布评论