计算机网络crc检验码,计算机网络技术CRC冗余码检验.doc

计算机网络技术CRC冗余码检验

XXXX大学(计算机网络技术)实验报告

实验名称 CRC冗余码检验

实验时间 2011年03月30日

专业 姓名 学号

预习 操作 总评

教师签名

一.实验目的:

掌握CRC冗余码校验的基本原理,编程实现CRC冗余码校验。

二.实验要求:

在C++的MFC下来实现这一过程。

三.实验内容及运行结果:

CRC—32(循环冗余错误校验)生成CRC—32校验字节的步骤如下:

(1)装入一个32位寄存器,所有数位均为1。

(2)该32位寄存器的高位字节与开始8位字节进行“异或”运算。运算结果放入这个32位寄存器。

(3)把这个32位寄存器向右移1位。

(4a)若向右(标记位)移出的数位是1,则生成多项式

10100000000000001010000000000001和这个寄存器进行“异或”运算。

(4b)若向右移出的数位是0,则返回(3)。

(5)重复(3)和(4),直至移出8位。

(6)另外24位与该32位寄存器进行“异或”运算。

(7)重复(3)—(6),直至该报文所有字节均与32位寄存器进行“异或”运算,并移位24次。

(8)这个32位寄存器的内容即4字节CRC错误校验

在C++下:文件新建—MFC AppWizard [exe]—创建的应用程序类型选择基本对话框—应用程序向导创建的类选择xxxDIg , 其它的属性默认系统设置。在资源菜单下设置自己喜欢的界面。添加相应参数,采用添加类的方式来完成。

对两个按钮的编写:

void CCrcydcDlg::OnButton1()

{

UpdateData(true);

int n,p,k,q,i,j=0;

LPCSTRhead,g,begain,str1,str3;

CStringstrEdit=m_strEdit1,s=CString("01");

n=strlen(m_strEdit3)-1;

if( strlen(m_strEdit1)==0 && strlen(m_strEdit3)==0 )

{

MessageBox("没有输入数据!请重新填写!");

return ;

}

if( strlen(m_strEdit1)==0 && strlen(m_strEdit3)!=0 )

{

MessageBox("没有输入要编码的数据!请重新填写!");

return ;

}

if( strlen(m_strEdit1)!=0 && strlen(m_strEdit3)==0 )

{

MessageBox("没有输入校验多项式!请重新填写!");

return ;

}

str1=m_strEdit1;

str3=m_strEdit3;

for(int I=0; (str1[I]=='0' || str1[I]=='1' ) && I < strlen(m_strEdit1) ;I++);

if( I < strlen(m_strEdit1) )

{MessageBox("输入的要编码的数据不合理!请重新填写!");

return ;

}

for(int J=0; (str3[J]=='0' || str3[J]=='1' ) && J < strlen(m_strEdit3) ;J++);

if( J < strlen(m_strEdit3) )

{MessageBox("输入的校验多项式不合理!请重新填写!");

return ;

}

for(k=n;k>0;k--)

strEdit+=CString("0");

strEdit=LPCSTR(strEdit);

head = strEdit ;

for( ; strlen( head ) >= strlen( m_strEdit3 ) ; )

{

g = m_strEdit3 ;

for( i=0; *g != '\0' ; i++, g++ )

{

if( *(head+i) == *g )

strEdit.SetAt(i+j,s[0]);//CString("0") ;

else

strEdit.SetAt(i+j,s[1]);//CString

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值