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

📄 crc.cpp

📁 crc.cpp是一个产生0-255对应的16位循环冗余码的例子 correlator.cpp是一个相关滤波例子
💻 CPP
字号:
//是正确的

#include "stdio.h"
#include "string.h"


void main(void)
{
	int i;
	int j;
	unsigned short crc16[256];
	unsigned char ch[256];

	//给数组赋值
	for(i=0;i<256;i++)
	{
		ch[i]=i;
	}

	//输出ch数组;
	printf("ch数组:\n");
	for(i=0;i<32;i++)
	{
		for(j=0;j<8;j++)
		{
			printf("%x",ch[i*8+j]);
			printf("   ");
		}
		printf("\n");
	}

	//计算每一个字节的crc16;
	j=0;
	while(j<256)   //下一个字节
	{
		crc16[j]=0;
		for(i=0x80;i!=0;i/=2) //一个字节的下一位
		{
			if((crc16[j]&0x8000)!=0) //如果余式的最高位是1,(余式共16位)
			{
				crc16[j]*=2;       //*余式CRC剩余2*/
				crc16[j]^=0x1021;  //再除以生成多项式
			}
			else
			{
				crc16[j]*=2;
			}
			if((ch[j]&i)!=0)  //判断字节的每一位,
			{
				crc16[j]^=0x1021;    //crc=crc^0x1021,再加上本位的CRC
			}

		}
		j++;
	}


	printf("\n");
	//输出crc16;
	printf("对应crc16:\n");
	for(i=0;i<32;i++)
	{
		for(j=0;j<8;j++)
		{
			printf("0x%x,",crc16[i*8+j]);
			printf("   ");
		}
		printf("\n");
	}
	printf("\n");

}






/*
unsigned int crc16r(unsigned int crcword, unsigned int crc) 
{ 
unsigned char i; 
  for(i = 0; i < 16; i++){ 
    if(((crc ^ crcword ) & 0x0001) == 0) crc >>= 1; 
    else{ 
      crc ^= 0x810;//0x0810;//CRC=X16+X12+X5+1 
      crc >>= 1; 
      crc |= 0x8000; 
    } 
    crcword >>= 1; 
  } 
  return crc; 
} 



	const char* pMima="please";

    i=0;
	printf("请输入密码:");
    while((strcmp(line,pMima)!=0)&&(i<3)
	{)
		gets(line);
		i++;
	}
    if((i>2)&&(strcmp(line,pMima)!=0))
	{
		printf("你的密码是错误的!");
		while(1);
	}
	else
	{
		;
	}
	*/

⌨️ 快捷键说明

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