crc校验c语言实现代码
时间: 2023-10-28 10:05:41 浏览: 122
CRC校验是一种常用的数据校验方法,可以帮助我们检测数据传输或存储过程中的错误,提高数据的可靠性和完整性。以下是一个C语言实现CRC校验算法的示例代码:
```
#include <stdio.h>
#include <stdint.h>
#define POLYNOMIAL 0xEDB88320
uint32_t crcTable[256];
void crcInit(void)
{
uint32_t crc;
int i, j;
for (i = 0; i < 256; i++) {
crc = i;
for (j = 0; j < 8; j++) {
if (crc & 1) {
crc = (crc >> 1) ^ POLYNOMIAL; } else {
crc >>= 1;
}
}
crcTable[i] = crc;
}
}
uint32_t crcCompute(const uint8_t *data, uint32_t length)
{
uint32_t crc = 0xFFFFFFFF;
uint32_t i;
for (i = 0; i < length; i++) {
crc = (crc >> 8) ^ crcTable[(crc & 0xFF) ^ data[i]];
}
return crc ^ 0xFFFFFFFF;
}
int main(void)
{
uint8_t data[] = {0x01, 0x02, 0x03, 0x04, 0x05};
uint32_t crc;
crcInit();
crc = crcCompute(data, sizeof(data));
printf("CRC: 0x%08X\n", crc);
return 0;
}
```
在这个示例代码中,crcInit() 函数用来计算 crcTable,因此在调用 crcCompute 前必须先调用 crcInit()。crcCompute 函数接受一个指向数据的指针和数据长度作为参数,并返回计算出的CRC值。在主函数中,我们定义了一个数据数组并计算出它的CRC值。
阅读全文