C语言 实现 crc-16=x16+x15+x2+1
时间: 2023-08-05 07:09:17 浏览: 128
你可以使用以下的 C 代码来实现 CRC-16 校验:
```c
#include <stdio.h>
#define CRC_POLY 0xA001
unsigned short crc16(unsigned char *data, int length) {
unsigned short crc = 0xFFFF;
int i, j;
for (i = 0; i < length; i++) {
crc ^= data[i];
for (j = 0; j < 8; j++) {
if (crc & 0x0001) {
crc = (crc >> 1) ^ CRC_POLY;
} else {
crc = crc >> 1;
}
}
}
return crc;
}
int main() {
unsigned char data[] = {0x01, 0x23, 0x45, 0x67}; // 示例数据
int length = sizeof(data) / sizeof(data[0]);
unsigned short crc = crc16(data, length);
printf("CRC-16: %04X\n", crc);
return 0;
}
```
这段代码中的 `crc16` 函数用于计算给定数据的 CRC-16 校验值。`CRC_POLY` 定义了 x^16 + x^15 + x^2 + 1 的多项式(0xA001)。在 `main` 函数中,我们使用示例数据来计算 CRC-16 的校验值,并打印结果。你可以根据自己的需求修改数据部分。
阅读全文