16位crc计算法代码 C语言 
时间: 2023-03-04 22:33:50 浏览: 45
以下是一个简单的C语言函数,用于计算16位CRC码。该函数采用标准CRC-CCITT多项式(x^16 + x^12 + x^5 + 1)进行计算。
```c
#include <stdio.h>
#include <stdlib.h>
unsigned short crc16(unsigned char *data, int len)
{
unsigned short crc = 0xFFFF;
int i;
while (len--)
{
crc ^= *data++;
for (i = 0; i < 8; i++)
{
if (crc & 1)
crc = (crc >> 1) ^ 0x8408;
else
crc >>= 1;
}
}
return crc;
}
int main()
{
unsigned char data[] = { 0x01, 0x02, 0x03, 0x04 };
unsigned short crc = crc16(data, sizeof(data));
printf("CRC: %04X\n", crc);
return 0;
}
```
此代码使用指针和循环实现16位CRC计算。循环中的条件检查每个数据位,如果为1,则将CRC多项式0x8408与当前CRC码异或;否则,只将CRC码右移一个位。最后,函数返回CRC值。这个代码可以应用于很多场合,如串行通讯,数据传输等等。
相关推荐













