crc校验c语言代码
时间: 2023-08-24 22:09:35 浏览: 97
以下是一个简单的 CRC 校验的 C 语言代码示例:
```c
#include <stdio.h>
unsigned short crc16(unsigned char *data, int len) {
unsigned short crc = 0xFFFF;
int i, j;
for (i = 0; i < len; i++) {
crc ^= data[i];
for (j = 0; j < 8; j++) {
if (crc & 0x0001) {
crc >>= 1;
crc ^= 0xA001;
} else {
crc >>= 1;
}
}
}
return crc;
}
int main() {
unsigned char data[] = {0x01, 0x02, 0x03, 0x04, 0x05};
unsigned short crc = crc16(data, sizeof(data)/sizeof(unsigned char));
printf("CRC16: %04X\n", crc);
return 0;
}
```
这个例子中的 `crc16` 函数根据输入的数据 `data` 和长度 `len` 计算 CRC16 校验码,并返回结果。函数使用了标准的 CRC16-CCITT 算法,其多项式为 `0x1021`,初始值为 `0xFFFF`。在函数中,我们首先将 `crc` 初始化为 `0xFFFF`,然后依次对 `data` 中的每个字节执行异或操作,并按位移位计算 CRC 校验码。最后,函数返回计算出的 CRC 校验码。
在 `main` 函数中,我们定义了一个示例数据 `data`,并调用 `crc16` 函数计算出其 CRC16 校验码,并输出结果。
阅读全文