CRC8计算
CRC的C实现
unsigned char cal_crc(unsigned char *vptr, unsigned char len)
{
  const unsigned char *data = vptr;
  unsigned crc = 0;
	int i, j;
	for (j = len; j; j--, data++) 
	{
		crc ^= (*data << 8);
		for (i = 8; i; i--) 
		{
			if (crc & 0x8000)
			crc ^= (0x1070 << 3);
			crc <<= 1;
		}
	}
	return (unsigned char)(crc >> 8);
}
CRC在线计算工具
代码验证
复制以下代码,在https://www.runoob.com/try/runcode.php?filename=helloworld&type=c验证即可
#include <stdio.h>
//CRC-8 x8+x2+x+1
 unsigned char cal_crc(unsigned char *vptr, unsigned char len)
{
	const unsigned char *data = vptr;
	unsigned crc = 0;
	int i, j;
	for (j = len; j; j--, data++) 
	{
		crc ^= (*data << 8);
		for (i = 8; i; i--) 
		{
			if (crc & 0x8000)
			crc ^= (0x1070 << 3);
			crc <<= 1;
		}
	}
	return (unsigned char)(crc >> 8);
}
int main()
{
	//data 中正确数据为0x24
	unsigned char data[4]={0xa5,0x0d,0x14,0x01};
	unsigned char crc8=0;
	crc8=cal_crc(&data[0],4);
	
   /* 我的第一个 C 程序 */
   printf("crc8=%X\r\n",crc8);
   
   return 0;
}
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号