用c语言完成通用的CRC16算法程序
时间: 2023-05-17 22:07:34 浏览: 128
以下是一个通用的CRC16算法程序的C语言实现:
```c
#include <stdio.h>
#include <stdint.h>
uint16_t crc16(const uint8_t *data, size_t length) {
uint16_t crc = 0xFFFF;
for (size_t i = 0; i < length; ++i) {
crc ^= (uint16_t)data[i];
for (size_t j = 0; j < 8; ++j) {
if (crc & 0x0001) {
crc = (crc >> 1) ^ 0xA001;
} else {
crc = crc >> 1;
}
}
}
return crc;
}
int main() {
uint8_t data[] = {0x01, 0x02, 0x03, 0x04, 0x05};
uint16_t crc = crc16(data, sizeof(data));
printf("CRC16: 0x%04X\n", crc);
return 0;
}
```
这个程序实现了一个通用的CRC16算法,可以对任意长度的数据进行CRC校验。在主函数中,我们定义了一个5字节的数据数组,并计算出它的CRC16校验值。最后,我们将校验值输出到控制台。
阅读全文