C语言实现CRC32算法


本文将使用C语言完成CRC32算法的实现;

C语言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;
}

运行效果

对字符串 hello world 进行CRC32运算的结果如下:

222957957
d4a1185

如需转载,请注明出处;本文地址:https://www.perfcode.com/p/c-crc32.html