以上是版权申明使用。
关注之后进QQ群:
640383116
C语言版本的CRC-1005
#include<stdio.h>
#include<string.h>
typedef short U16;
typedef unsigned char U8;
#define CRC_POLY 0x1005 //x16+x12+x2+1
U16 cal_crc_check(U8* pucBuff, U16 usBuffLen, U16* pusCrcValue)
{
U16 usRc = 0;
U8 i = 0;
U16 usCrc16 = 0x0000;
while (usBuffLen--)
{
for ( i = 0x80; i !=0; i>>=1)
{
if ((usCrc16 & 0x8000) != 0)
{
usCrc16 = usCrc16 << 1;
usCrc16 = usCrc16 ^ CRC_POLY;
}
else
{
usCrc16 = usCrc16 << 1;
}
if ((*pucBuff & i) != 0)
{
usCrc16 = usCrc16 ^ CRC_POLY;
}
}
pucBuff++;
}
*pusCrcValue = usCrc16;
return usRc;
}
int main()
{
U16 usCheck = 0;
U8 buff[461] = {
0x01,0xCD,0x02,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x60,0x40,0x01,0x05,0x03,0x03,0x02,0x01,0x01,
0x02,0x05,0x03,0x03,0x02,0x02,0x10,0x03,0x05,0x03,0x03,0x02,0x03,0x01,0x04,0x05,0x03,0x03,0x02,0x04,
0x10,0x05,0x05,0x03,0x03,0x02,0x05,0x10,0x06,0x05,0x03,0x03,0x02,0x06,0x10,0x07,0x05,0x03,0x03,0x02,
0x07,0x10,0x08,0x05,0x03,0x03,0x02,0x08,0x10,0x09,0x05,0x03,0x03,0x02,0x09,0x01,0x0A,0x05,0x03,0x03,
0x02,0x0A,0x10,0x0B,0x05,0x03,0x03,0x02,0x0B,0x01,0x0C,0x05,0x03,0x03,0x02,0x0C,0x10,0x0D,0x05,0x03,
0x03,0x02,0x0D,0x10,0x0E,0x05,0x03,0x03,0x02,0x0E,0x01,0x0F,0x05,0x03,0x03,0x02,0x0F,0x10,0x10,0x05,
0x03,0x03,0x02,0x10,0x01,0x11,0x05,0x03,0x03,0x02,0x11,0x01,0x12,0x05,0x03,0x03,0x02,0x12,0x01,0x13,
0x05