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

📄 16位crc校验说明.txt

📁 为了保证数据传送的不出现问题,可以使用此校验方法
💻 TXT
字号:


1、求16位CRC的c语言实现代码

short oddparity[16] = { 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0 };
unsigned short docrc16(unsigned short svalue,unsigned short indata);

//以计算的方式求生成多项式为 x(16)+x(15)+x(2)+1 的CRC16校验
unsigned short docrc16(unsigned short svalue,unsigned short indata)
{
	unsigned short CRC16;
	CRC16 =svalue;
	indata = (indata ^ (svalue & 0xff)) & 0xff;
	CRC16 >>= 8;

	if (oddparity[indata & 0xf] ^ oddparity[indata >> 4])
		CRC16 ^= 0xc001;

	indata <<= 6;
	CRC16   ^= indata;
	indata <<= 1;
	CRC16   ^= indata;

	return CRC16;
}


void GetCRC16(unsigned short startvalue,BYTE *inputvalue,int len,BYTE rtn_HiLo[2])
{

	int	i;
	unsigned short	crc16,temp;
	crc16 =startvalue;

	for(i=0;i<len;i++)
	{
		temp =*(inputvalue+i);
		crc16 =docrc16(crc16,temp);
	}

	rtn_HiLo[0] =(BYTE)(crc16/256);
	rtn_HiLo[1] =(BYTE)(crc16%256);
}
说明:函数GetCRC16计算16位crc的调用函数,startvalue是16位移存器的初始值,我们一般将其赋0,inputvalue是要进行校验的数据内容,len是数据的字节数,rtn_HiLo[2]是返回值,16位crc的高字节放在rtn_HiLo[0]中,低字节放在rtn_HiLo[1]中。


⌨️ 快捷键说明

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