⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1(1).cpp

📁 编程实现CRC校验码的生成与利用CRC校验码进行正确性验证; 要求:1、任意给定二进制序列;(输入或程序中指定均可
💻 CPP
字号:
#include<iostream>
using namespace std;

void arrayxor(char data[], char poly[5], char rest[], int dl, int r, int s);
char singlexor(char a, char b);
void deal(int s);

int main()
{
	int s;
	for(int i=0; i<=10; i++)
	{
		cout<<"请输入:1.求验证码2.验证3.退出\n";	
		cin>>s;
		if(s==1)	{ deal(s); }
		else if(s==2) { deal(s); }
		else break;
	}
	return 0;
}

void deal(int s)
{
	char poly[5]={'1', '1', '0', '0', '1'};
	int r=sizeof(poly)-1;
	char data[16];
	char yan[16];
	if(s==1)
	{
		cout<<"请输入一二进制序列:";	
		cin>>data;
		cout<<data<<endl;
	
	}
	else if(s==2)
	{
		cout<<"请输入要验证序列:";
		cin>>data;
		cout<<"\n请输入要验证的验证码:";	
		cin>>yan;
	}
	int dl=0;
	char rest[5];
	char add[32];
	for(int i=0; ; i++, dl++)
	{
		if(data[i]=='\0') break;
		add[i]=data[i];
	}

	if(s==1)
	{
		for(i=dl; i<=r+dl-1; i++)
		{
			add[i]='0';
		}
	}
	else if(s==2)
	{
		for(int k=0; ;k++)
		{
			if(yan[k]=='\0') break;
		}
		int L_yan=k-1;
		k=0;
		for(i=dl; i<=r+dl-L_yan-2; i++)
		{
			add[i]='0';
		}
		for(i=r+dl-L_yan-1; i<=r+dl||k<=L_yan; i++,k++)
		{
			add[i]=yan[k];
		}
	}
	arrayxor(add, poly, rest, dl, r, s);
}

void arrayxor(char add[], char poly[5], char rest[], int dl, int r, int s)
{
//	cout<<"add:"<<add<<endl;
	for(int i=0; i<=r; i++)
	{
		rest[i]=add[i];
	}
//进行数组异或
	for(i=r; i<=r+dl; i++)
	{
		if(rest[0]=='0') //首位为0,向右一位
		{
			for(int j=0; j<r; j++)
			{
				rest[j]=rest[j+1];
			}
			rest[j]=add[i];
			continue;
		}

		else           //否则,异或
		{
			for(int j=0; j<r+1; j++)
			{
				rest[j]=singlexor(poly[j], rest[j]);
			}
		}

	}
//////////////经上循环,得出余数rest[]/////////////////////////
	if(s==1)
	{
		cout<<"校检码:";
		for(int k=0; k<r+1; k++)
		{
			cout<<rest[k];
		}
		cout<<endl;
	}
	if(s==2)
	{
		int flag=0;
		for(int k=0; k<r+1; k++)
		{
			if(rest[k]=='1') flag=1;
		}
		if(flag==0)
		{
			cout<<"数据传送正确\n";
		}
		else cout<<"数据传送错误\n";
	}
}

// 0/1异或函数
char singlexor(char a, char b)
{
	if(a==b) return '0';
	else return '1';
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -