crc.c

来自「CRC采用比特型算法」· C语言 代码 · 共 55 行

C
55
字号
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

#include "gentype.h"


//比特型CRC计算
USINT CrcCheck(UCHAR *ucStarAddr ,UCHAR ucDataLen)		//ucStarAddr为需作crc校验的数组首地址,ucDataLen为crc校验的数据个数
{	
	USINT cRc_16 = ucStarAddr[0]<<8 | ucStarAddr[1];    // 初始化
	USINT i;
	USINT uiTemp;
    
	ucStarAddr += 2;
    while(ucDataLen>0)
    {
        for(i=0x80; i!=0; i >>=1)
		{			
			if(*ucStarAddr&i)
				uiTemp = 1;
			else
				uiTemp = 0;

			if(cRc_16&0x8000)
				cRc_16 = (cRc_16<<1 | uiTemp)^0x1021;					//反转时cRc_16=(cRc_16>>=1)^gEnpoly
			else
				cRc_16 = (cRc_16<<1 | uiTemp);									//反转时cRc_16>>=1
			
		}
		ucDataLen--;
        ucStarAddr++;
    }
    
    return cRc_16; 
}

void main()
{
	USINT CRCResult;
	//USINT i;
	printf("Start Test\n");

	CRCResult = CrcCheck(TestArray,10);
	

	printf("CRC Result = %x\n",CRCResult);

	getchar();
}




⌨️ 快捷键说明

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