请教什么时候用CRC8 什么时候用CRC16 什么时候用CRC32
个人感觉好像和发送的数据位数有关,比如发送1字节好像应该用CRC8合适。如果我连续发送4字节数据+CRC8 这时通信可以保证32位数据有1位错误也能揪出来吗?另外看到WINRAR软件对一个很大的文件压缩后,后面会跟着CRC32校验码,这个校验码可以完全保证我文件无错误吗?如果不能检错,岂不是用了错误的文件也不知道 我觉得这个跟数据包长短没关系,不知道你是用在什么场合,如果信噪比低的地方最好是CRC32或者更强的检验算法。 无论什么校验算法都有出错的机率。比如CRC16的出错机率就是1/65536。加长同步字,加数据包特征检测,甚至多数据包联合校验都是可以的。 每个算法都有一定的概率,而且在文件长度一样的情况下,想发生CRC碰撞,需要非常多位的数据全部出错且撞大运才行。
所以确保长度的情况下,可以认为CRC能保证数据完整无误。 以前不知在哪里看到好像说 1字节数据+CRC8可以100%检验出数据当中1bit的错误,如果同时出现2bit错误或者同时更多bit的错误话就达不到100%检错了(**可能有的偏差,但是意思就是大概这样)。
我这里就想知道如果100%检错出1bit错误的话那么CRC8,CRC16,CRC32分别可以同时控制多少字节数据呢?
如果100%检错出2bit错误的话那么CRC8,CRC16,CRC32分别可以同时控制多少字节数据呢?
........................3bit............................................................................................
可能这样问不是专业,随着错误数增多要达到100%检错在理论上说不定也是不可能的,我这里就想大概定量知道一下各种情况不管是100%检错还是只有百分之九十几也好,目的是想在实际使用中我发送一批数据尽量选用低阶的CRC,或者已知用CRC多少的情况下安排最大的数据字节数发送,好充分发掘CRC的检错能力。 不在乎信息长度,也可以用md5,或者前向纠错码 这个跟要求的校验严格性有关,一般用CRC16即可。 http://www.21ic.com/tools/HotWC3_V1.22.html 循环冗余校验估计 要用数学的方法才能说明这个问题
CRC8用代码生成数据,一会儿就穷举出 一样的CRC8结果出来 ,N多不同的字符串 都能生成一样的CRC8来
页:
[1]