crc16校验算法c语言
时间: 2023-08-31 07:12:34 浏览: 80
下面是一个基于CRC-16算法的C语言实现:
```c
#include <stdio.h>
unsigned short crc16(unsigned char *data, unsigned int length) {
unsigned short crc = 0xFFFF;
for (unsigned int i = 0; i < length; i++) {
crc ^= data[i];
for (unsigned int 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 int length = sizeof(data) / sizeof(data[0]);
unsigned short crc = crc16(data, length);
printf("CRC-16: 0x%04X\n", crc);
return 0;
}
```
使用时,只需要传入需要计算CRC-16校验值的数据和数据长度即可。该函数返回计算得到的CRC-16校验值。
阅读全文