crcv2.c

来自「加权多项式采用CRC16=X16+X15+X5+1」· C语言 代码 · 共 57 行

C
57
字号
#include<stdio.h>
typedef unsigned char uchar;
typedef unsigned int uint;
uchar crcbuff[]={0x00,0x00,0x00,0x00,0x06,0x0d,0xd2,0xe3};
uint crc;

uint crc16(uchar *ptr,uchar len)
{
	uchar i;
	while(len--)
	{
		for(i=0x80;i!=0;i>>=1)
		{
			if((crc&0x8000)!=0)
			{
				crc<<=1;
				crc^=0x1021;
			}
			else
				crc<<=1;
			if((*ptr&i)!=0)
				crc^=0x1021;

		}
		ptr++;
	}
	return(crc);
}
void main(void)
{
	uchar *ptr;
	//uchar data;
	//FILE *fp;

	crc=0;
	//fp=fopen("mydata.txt","w+t");
	ptr=crcbuff;

	/*for(data=0x00;data<0xff;data++)
	{
		crc=0;
		crc=crc16(&data,1);
		fprintf(fp,"0x%4X\n",crc);
	}

	data=0xff;
	crc=0;
	crc=crc16(&data,1);
	fprintf(fp,"0x%4X\n",crc);

	fclose(fp);*/

	crc=crc16(ptr,8);
	printf("0x%4X\n",crc);

	getch();
}

⌨️ 快捷键说明

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