C语言的CRC32校验代码最全
时间: 2023-10-09 14:09:23 浏览: 197
下面是一个使用C语言实现的CRC32校验代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CRC32_POLYNOMIAL 0xEDB88320
unsigned long crc32_table[256];
void generate_crc32_table()
{
unsigned long crc;
int i, j;
for (i = 0; i < 256; i++) {
crc = i;
for (j = 0; j < 8; j++) {
if (crc & 1)
crc = (crc >> 1) ^ CRC32_POLYNOMIAL;
else
crc >>= 1;
}
crc32_table[i] = crc;
}
}
unsigned long crc32(unsigned char *buf, int len)
{
unsigned long crc = 0xFFFFFFFF;
int i;
for (i = 0; i < len; i++)
crc = (crc >> 8) ^ crc32_table[(crc ^ buf[i]) & 0xFF];
return crc ^ 0xFFFFFFFF;
}
int main()
{
unsigned char buf[1024];
int len, i;
unsigned long crc;
generate_crc32_table();
printf("Enter the string to compute the CRC32 checksum:\n");
fgets(buf, sizeof(buf), stdin);
len = strlen(buf);
crc = crc32(buf, len);
printf("CRC32 checksum: 0x%08lX\n", crc);
return 0;
}
```
此代码实现了一个生成CRC32校验和的函数,它使用了预先计算的CRC32表,以便在计算校验和时更快地执行。该程序从标准输入中读取一个字符串,并计算它的CRC32校验和。输出以十六进制形式打印的校验和。您可以将此代码作为起点,根据您的需求进行修改。
阅读全文