以上是版权申明使用。

关注之后进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,0x03,0x03,0x02,0x13,0x01,0x14,0x05,0x03,0x03,0x02,0x14,0x01,0x15,0x05,0x03,0x03,0x02,0x15,0x01,
0x16,0x05,0x03,0x03,0x02,0x16,0x01,0x17,0x05,0x03,0x03,0x02,0x17,0x01,0x18,0x05,0x03,0x03,0x02,0x18,
0x01,0x19,0x05,0x03,0x03,0x02,0x19,0x01,0x1A,0x05,0x03,0x03,0x02,0x1A,0x01,0x1B,0x05,0x03,0x03,0x02,
0x1B,0x01,0x1C,0x05,0x03,0x03,0x02,0x1C,0x01,0x1D,0x05,0x03,0x03,0x02,0x1D,0x01,0x1E,0x05,0x03,0x03,
0x02,0x1E,0x01,0x1F,0x05,0x03,0x03,0x02,0x1F,0x01,0x20,0x05,0x03,0x03,0x02,0x20,0x01,0x21,0x05,0x03,
0x03,0x02,0x21,0x01,0x22

本文提供了CRC16-1005校验的C语言和C#实现,详细解析了使用多项式X16+X12+X2+1进行CRC校验的代码实现过程。
最低0.47元/天 解锁文章





