本文将使用 C 语言完成 CRC32 算法的实现;
CRC32(循环冗余校验)是一种常用的校验算法,主要用于检测数据传输或存储过程中的错误。它通过计算输入数据生成一个 32 位哈希值(通常表示为 8 位十六进制数)。
C语言实现CRC32算法
这个例子对字符串"hello world"
进行 CRC32 运算:
#include <inttypes.h>
#include <stdio.h>
uint32_t crc32(const char* s){
uint32_t crc = 0xffffffff;
size_t i = 0;
while (s[i] != '\0')
{
uint8_t byte = s[i];
crc = crc ^ byte;
for (uint8_t j = 8; j > 0; --j)
{
crc = (crc >> 1) ^ (0xEDB88320 & (-(crc & 1)));
}
i++;
}
return crc ^ 0xffffffff;
}
int main(){
printf("%" PRIu32 "\n", crc32("hello world"));//222957957
printf("%" PRIx32 "\n", crc32("hello world"));//d4a1185
return 0;
}
程序输出:
222957957 d4a1185