CRC校验代码 c++ 加我qq506307214我给你发/ 1、实验题目:CRC校验 PPP协议受到数据帧后要对数据部分连同FCS字段做CRC校验,结果若不为“0”,则可以肯定数据在传输过程中出错;。
请高手解决试计算传输信息码1011001和101001的CRC码,其生成多项式为G(X)=X4+X3+1 生成多项式为G(x)=x4+x3+1,写为二进制代码就是11001,因最高为4次方,故需要在信息码后面附加4bit的CRC码.信息码为1011001时,做二进制除法 10110010000/11001,得余数为1010,故CRC码为1010,实际发送的bit序列为10110011010.信息码为101001时,做二进制除法 1010010000/11001,得余数为1011,故CRC码为1011,实际发送的bit序列为1010011011.
CRC计算,CRC码 1、将X的最高次幂为R的生成多项式G(X)转换成对应的R+1位二进制数.2、将信息码左移R位,相当于对应的信息多项式C(X)*2R.3、用生成多项式(二进制数)对信息码做除,得到R位的余数.4、将余数拼到信息码左移后空出的位置,得到完整的CRC码.【例】假设使用的生成多项式是G(X)=X3+X+1.4位的原始报文为1010,求编码后的报文.1、将生成多项式G(X)=X3+X+1转换成对应的二进制除数1011.2、此题生成多项式有4位(R+1)(注意:4位的生成多项式计算所得的校验码为3位,R为校验码位数),要把原始报文C(X)左移3(R)位变成1010 0003、用生成多项式对应的二进制数对左移3位后的原始报文进行模2除(高位对齐),相当于按位异或:1010000101100010001011011得到的余位011,所以最终编码为:1010 011CRC.C—CRC程序库*/define CRCCCITT 0x1021define CCITT-REV 0x8408define CRC16 0x8005define CRC16-REV 0xA001define CRC32-POLYNOMIAL 0xEDB88320L以上为CRC除数的定义*/define NIL 0define crcupdate(d,a,t)*(a)=(*(a)8)^(d)];define crcupdate16(d,a,t)*(a)=(*(a)>;>;8^(t)[(*(a)^(d))&0x00ff])以上两个宏可以代替函数crcupdate和crcrevupdate*/include#include#include/*函数。