那个CRC校验码我不太明白,我看到你给别人的回答,有一些地方不是很懂
CRC是什么东西呢?其实我们大家都不应该会对它陌生,回忆一下?你用过RAR和ZIP等压缩软件吗?它们是不是常常会给你一个恼人的“CRC校验错误”信息呢?我想你应该明白了吧,CRC就是块数据的计算值,它的全称是“Cyclic Redundancy Check”,中文名是“循环冗余码”,“CRC校验”就是“循环冗余校验”。CRC校验采用多项式编码方法。被处理的数据块可以看作是一个n阶的二进制多项式,由 。如一个8位二进制数10110101可以表示为: 。多项式乘除法运算过程与普通代数多项式的乘除法相同。多项式的加减法运算以2为模,加减时不进,错位,和逻辑异或运算一致。
采用CRC校验时,发送方和接收方用同一个生成多项式g(x),并且g(x)的首位和最后一位的系数必须为1。CRC的处理方法是:发送方以g(x)去除t(x),得到余数作为CRC校验码。校验时,以计算的校正结果是否为0为据,判断数据帧是否出错。
CRC校验可以100%地检测出所有奇数个随机错误和长度小于等于k(k为g(x)的阶数)的突发错误。所以CRC的生成多项式的阶数越高,那么误判的概率就越小。CCITT建议:2048 kbit/s的PCM基群设备采用CRC-4方案,使用的CRC校验码生成多项式g(x)= 。采用16位CRC校验,可以保证在 bit码元中只含有一位未被检测出的错误 。在IBM的同步数据链路控制规程SDLC的帧校验序列FCS中,使用CRC-16,其生成多项式g(x)= ;而在CCITT推荐的高级数据链路控制规程HDLC的帧校验序列FCS中,使用CCITT-16,其生成多项式g(x)= 。CRC-32的生成多项式g(x)= 。CRC-32出错的概率比CRC-16低 倍 。由于CRC-32的可靠性,把CRC-32用于重要数据传输十分合适,所以在通信、计算机等领域运用十分广泛。在一些UART通信控制芯片(如MC6582、Intel8273和Z80-SIO)内,都采用了CRC校验码进行差错控制;以太网卡芯片、MPEG解码芯片中,也采用CRC-32进行差错控制。
如果是低速设计上游数据可能是串行的 显然如果采用并行实现有些浪费硬件资源 因为还要把串行输入存储起来形成整字节的并行输入
CRC的“定义”不是唯一的 只要接收发送端采用的一致就行
不知道你看了什么资料 但是估计不是很好 不如直接看维基百科里的介绍
http://zh.wikipedia.org/wiki/%E5%BE%AA%E7%8E%AF%E5%86%97%E4%BD%99%E6%A0%A1%E9%AA%8C
“初始值”、“反射值”以及“最终异或值”
对于一些复杂的校验和来说这些十六进制数值是很重要的,如 CRC-32 以及 CRC-64。通常小于 CRC-16 的 CRC 不需要使用这些值。通常可以通过改变这些值来得到各自不同的校验和,但是校验和算法机制并没有变化
CRC 标准化问题
相同长度的CRC也可能有多种形式,据称 CRC-16 与 CRC-32 至少有 10 种形式,但没有一种在数学上是最优的
移位寄存器可以初始化成 1 而不是 0。同样,在用算法处理之前,消息的最初n个数据位要取反。这是因为未经修改的 CRC 无法区分只有起始 0 的个数不同的两条消息。而经过这样的取反过程,CRC 就可以正确地分辨这些消息了
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。
目录
循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2的R次方,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2的R次方除以生成多项式G(x)得到的余数就是校验码。
二.CRC 校验码的数学计算方法
CRC 检验的基本原理是: 在一个k 位二进制数据序列之后附加一个r 位二进制检验码序列, 构成一个总长为n = k + r 位的二进制序列, 这种编码又叫( N,K ) 码, 它可以提高整个编码系统的码距和检错能力。例如, 对k 位二进制数据序列D = [ ,] 进行计算, 得到的r 位二进制检验码表示为R =[ , ] , 将R 附加到D 之后, 构成一个新的n 位二进制序列M= [ , , ] 。其中校验码R 是通过对数据序列D 进行二进制除法取余式运算得到的, 它被一个称为生成多项式的r + 1位二进制序列G = [ , ]来除, 得到的余数就是CRC 校验码。
名称 生成多项式 简记式* 应用举例
CRC-4 x4+x+1 3 ITU G.704 CRC-12 x12+x11+x3+x+1
CRC-16 x16+x15+x2+1 8005 IBM SDLC
CRC-ITU** x16+x12+x5+1 1021 ISO HDLC, ITU X.25, V.34/V.41/V.42, PPP-FCS
CRC32 x32+x26+x23+...+x2+x+1 04C11DB7 ZIP, RAR, IEEE 802 LAN/FDDI, IEEE 1394, PPP-FCS CRC-32c x32+x28+x27+...+x8+x6+1 1EDC6F41 SCTP
三.CRC 串行算法方法
请问:CRC是什么意思?
CRC意思是循环冗余码校验。校验原理:(M-R)\/G=Q+0\/G 说明:以接收到的校验码除以约定的除数,若余数为0,则可认为接收到的数据是正确的。例:有效信息1101,生成多项式样1011 循环校验码解:有效信息1101(k=4),即M(x)=x3+x2+x0,生成多项式1011(r+1=4,即r=3);即G(x)=x3+...
CRC和checksum的区别
一、定义不同:1.CRC:是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术。2.checksum:在数据处理和数据通信领域中,用于校验目的的一组数据项的和。二、作用不同:1.CRC:用除法及余数的原理来作错误侦测。2.checksum:保证数据的完整性和准确性。
关于CRC效验
CRC代码的一些基本概念和运算:CRC多项式:例:代码:1010111 对应的多项式为:X6+X4+X2+X+1 多项式X5+X3+X2+X1+1对应的代码为101111 CRC生成多项式:首位和最后一位必须是1。CRC生成多项式是给定的,在传输过程中不变,即发送和接收端生成码相同。一些常用的校验码为:CRC8=X8+X5+X4+1 CRC-...
CRC校验为什么能够保证数据的准确性(出错率很低很低)
你要搞清楚,CRC说到底只是校验码而已,能够以比较高的精度检测出一个二进制串中出现的错误(检测能力也不是100%的)。CRC校验并不能降低数据传输过程中的出错率……其原理简单来说,就是将一个数字串A除以特定的除数B,把余数C加在数字串的末尾形成AC,那么这个数字串AC就应当能被B整除。如果不能...
差错控制编码有哪些
2. 循环冗余校验码(CRC)CRC是一种广泛应用于数据传输和存储领域的差错控制编码。它通过附加一组冗余的校验位到原始数据中,构成一个更大的数据块。接收端会对接收到的数据进行相同的计算过程,并对比计算的结果来判断数据是否在传输过程中发生了错误。CRC具有高度的检测能力,能有效检测多种类型的错误。
CRC校验的生成方法
利用CRC进行检错的过程可简单描述为:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息后边,构成一个新的二进制码序列数共k+r位,然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则,在差错控制...
crc如何校验
请参考我先前的回答,如下 CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或(异或:二进制运算 相同为0,不同为1;0^0=0;0^1=1;1^0=1;1^1=0), 之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,...
急求高手解答!为什么解压缩或安装总是crc 校检出错!
区分上面两种错误的方法:如果密码输入错误的话是无法解压出任何文件的!但如果压缩包内有多个文件,且有一部分文件解压缩出来了,那么应该是RAR压缩包循环冗余校验码(CRC)出错而不是密码输入错误。循环冗余校验码(CRC)出错,这是最常见的情况,这也是本文讨论的重点!和上面的几种解压缩出错不同,这种...
这个CRC编码怎么算啊
这样经过计算后,原始数据的右侧多出了4个0,也就是多出了4个空位,在将来通过计算得出的CRC校验码就要放到这4个空位中,4位的CRC校验码就要填充到这挪出的4个车位,按CRC规则,使用变形后的发送多项式的二进制形式:1001110111010000去除以CRC生成多项式的二进制形式:10111,请注意,这里使用的除法,不...
crc 计算机网络
2017年12月29日,星期五,兄弟,我先给你简单再捋一遍CRC编码的概念和计算公式,原理明白了,以后不管碰到什么样的题,你都会迎刃而解了。首先,需要知道如下几个概念,CRC编码,就是你题目中所说的“待发字串”,它是经加工后带有CRC校验的待发送信息,CRC校验码,就是你题目中所说的“CRC循环冗余...
逄霄舒脑: CRC校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能. 可以对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性.CRC校验中有两个关键点,一是预先确定一个发送送端和接收端都用来作为除数的二进制比特串(或多项式),可以随机选择,也可以使用国际标准. 但是最高位和最低位必须为1;二是把原始帧与上面计算出的除数进行模2除法运算,计算出CRC码.
沈河区13219542953: CRC校验码是怎样生成的,或者说是怎样计算出来的?百度了一下,都没怎么看懂,有谁可以教我吗?我要做一个modbus的通讯要用到,一时没弄懂, - ?
逄霄舒脑:[答案] 一只蜘蛛网触到了我的前额. 那一刻, 并非十分纯正. 痛苦的另一种方式,一次冒险, 为么然后我得背诵我的课文,我的声音低低的 我在马上,到影子里
沈河区13219542953: 什么是CRC校验?这是加密解密中看到的. BY: Pedoc. - ?
逄霄舒脑: CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定.
沈河区13219542953: 什么是CRC校验错误? - ?
逄霄舒脑: 您出现CRC校验错误,可能是您在下载客户端发生异常或电脑感染了病毒时发生的错误.您可以通过以下方式偿试解决: 1.将之前下载并安装的客户端彻底删除.删除安装目录时,请一并删除“Launche...
沈河区13219542953: 安装过程当中出现CRC校验码错误 ?
逄霄舒脑: CRC是Cyclick Redundancy Check的缩略语,是检测网络当中是否正常传输信息的技术.通过网络下载的文件,会出现与原件不一致或者文件移动、复制当中因硬盘、lam等媒体的错误造成这个事故.此时首先要检查硬盘,这个原因可能是您在下载过程当中文件受损而造成的问题,确认一下客户端大小(精确到字节),看看是否下载了完整的客户端.如果没有下载完整,烦请重新下载客户端再试一下.
沈河区13219542953: 什么叫CRC校验???? - ?
逄霄舒脑: CRC是什么东西呢?其实我们大家都不应该会对它陌生,回忆一下?你用过RAR和ZIP等压缩软件吗?它们是不是常常会给你一个恼人的“CRC校验错误”信息呢?我想你应该明白了吧,CRC就是块数据的计算值,它的全称是“Cyclic Redundancy Check”,中文名是“循环冗余码”,“CRC校验”就是“循环冗余校验
沈河区13219542953: 请教CRC效验码?
逄霄舒脑: (1)g(x)最高次幂为r=3,故首先将m(x)左移3位,空位填0,得到d(x)=1110000; (2)g(x)=1011 (3)求余,算式如下: # 1 1 0 0# ________________________________ # 1011 )1 1 1 0 0 0 0 # 1 0 1 1 //和普通算术除法不同的是,这里的相减要用异...
沈河区13219542953: 请问什么是CRC校验码?
逄霄舒脑: Check,简称CRC.它是利用除法及余数的原理来作错误侦测(Error Detecting)的.实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说...
沈河区13219542953: 什么是CRC校验??
逄霄舒脑: 简单的说,CRC校验值就是一组信息除以一个约定好的多项式得到的余数. 你可以用winrar压缩一个0字节空文件,再打开发现它的crc值是000000 得到这个余数有什么用呢,主要用来检验信息的内容有没有变化,因为信息发生了改变,这个余数一般也会发生改变
沈河区13219542953: FX1N PLC与台达变频器485通迅的 CRC校验码,不会写 - ?
逄霄舒脑: 第一点:如果是固定采集的,可以算出CRC校验码填上去 第二点:百度上好像有CRC校验程序