打印

一直以来对CRC根深蒂固的思想,被百度搞得莫名其妙了...

[复制链接]
2809|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zq1987731|  楼主 | 2009-4-29 08:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我之前对CRC一贯的用法:
    主机要发送一20字节数据给从机,我用CRC-32计算后多出4个字节,将这24个字节传给从机,那么从机收到后对这24个字节一起用同样的多项式再计算一遍CRC,结果为0则正确,非0则错误。
    结果~无意中发现百度里CRC词条中有这么句话:
================================================================
一、循环冗余码校验英文名称为Cyclical Redundancy 
  Check,简称CRC。它是利用除法及余数的原理来作错误侦测(Error 
  Detecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明数据通讯出现错误。
================================================================
    特别是最后一句,难不成真是这样靠比较多出来的那4个字节检验正确与否的么?

相关帖子

沙发
HWM| | 2009-4-29 08:38 | 只看该作者

要查错,必须有冗余,这是给代码增加“码距”

若没有“码距”,任何一个“码点”都可能是正确的,那错便无从查起。但是否有了“码距”就一定能查出错误来呢?也不一定。那是因为,如果错得离谱,竟然从一个“码点”正好跳到了另一个“码点”,则就没法鉴别其错误了。所以,所谓查错只是在一定的概率下才成立的。

使用特权

评论回复
板凳
mohanwei| | 2009-4-29 08:46 | 只看该作者

百度出的结果是对的,你的做法一定程度上也没有问题

你的做法是百度做法的子集

使用特权

评论回复
地板
yewuyi| | 2009-4-29 09:10 | 只看该作者

~~

实际那种CRC硬件的方式,都是计算而不是比较。


个人认为把所有的字符串进行计算的方式更合理一点,当然比较也没有什么错。。。

使用特权

评论回复
5
computer00| | 2009-4-29 10:06 | 只看该作者

直接比较和再计算是否为0意思一样的吧?

因为,CRC出来的结果就是这两个串相除得到的余数,你把余数加在后面,当然刚好能整除了(也就是结果为0了)。

直接比较,那更容易理解了,因为他根本就是同一个操作嘛。

使用特权

评论回复
6
学生D| | 2009-4-29 14:19 | 只看该作者

百度正解。

百度说的“发送装置”是指通信控制器装置。装置上进行的CRC计算是由硬件移位寄存器+异或门混合电路实现的。例如以太网通信适配器、CAN通信控制器上都是由硬件CRC电路运算硬件实现的。
    这是就MAC媒体访问层技术而言的。

    而LZ说的是用软件实现CRC校验,是“用户层”的事。当然不可能采用同一技术进行运算。

   硬件CRC接收电路实际上不是校0,而是一个固定值:例如CRC-ITU这个值为1D0Fh。
   硬件CRC电路是面向bit的校验技术,发送一位,校验一位,逐位校验。一帧报文最后一位发送完毕,接收方同时校验完毕。(或者再经过一个CRC累加器位数的(高速)脉冲延迟。)而对于软件校验技术,这时校验才刚刚开始,——它是面向帧实现的校验技术。慢得多了。



使用特权

评论回复
7
bhsdlmj| | 2009-10-14 13:57 | 只看该作者
因为,CRC出来的结果就是这两个串相除得到的余数,你把余数加在后面,当然刚好能整除了(也就是结果为0了)。直接比较,那更容易理解了,因为他根本就是同一个操作嘛。  ...
computer00 发表于 2009-4-29 10:06



到底一样还是不一样啊????

使用特权

评论回复
8
冷漠| | 2009-10-14 17:28 | 只看该作者
唉!刚刚看懂。

一个CRC计算值,理论上包含了整个数据帧前面所有位的“历史信息”。
所以只要比较2帧数据最后4字节数值一致,就表示前面所有各位相同。(历史信息相同)

虽然相同的CRC值并不能表示唯一的“数据历史信息”,——例如数据34H的余数假设是5678H,而数据1234H的余数也可能是5678H,——但是数学上可以证明,在帧位数相同的情况下,CRC所代表的历史信息是唯一的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

759

帖子

3

粉丝