c语言实现crc循环冗余校验
时间: 2023-07-25 09:47:10 浏览: 98
C语言实现CRC循环冗余校验的代码如下:
```c
#include <stdio.h>
#include <string.h>
#define CRC_POLY 0x1021
#define CRC_INIT 0xFFFF
unsigned short crc16(unsigned char *data, int len)
{
unsigned short crc = CRC_INIT;
int i, j;
for (i = 0; i < len; i++) {
crc ^= (unsigned short)data[i] << 8;
for (j = 0; j < 8; j++) {
if (crc & 0x8000)
crc = (crc << 1) ^ CRC_POLY;
else
crc <<= 1;
}
}
return crc;
}
int main(void)
{
unsigned char data[] = "Hello, world!";
unsigned short crc = crc16(data, strlen(data));
printf("CRC16: 0x%04X\n", crc);
return 0;
}
```
其中,`CRC_POLY`是CRC多项式,`CRC_INIT`是CRC初始值。`crc16`函数接收一个字节数组和字节数组长度,计算出CRC校验值并返回。在`main`函数中,我们使用字符串"Hello, world!"作为数据进行CRC校验,并输出结果。
阅读全文