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

分类: 计算机技术
推荐阅读:
Rust:cannot assign twice to immutable variable `x`错误解决方法 在rust语言中,变量默认情况下是不允许被改变的,当你试图修改一个不可变变量时,将造成 error[E0384]: cannot assign twice to immutable variable `x` 这样的错误;
Matlab如何设置默认工作目录? 要设置 MATLAB 的默认工作目录,可以按照以下步骤进行操作:
Python round()函数 在 Python 中,round() 函数用于将一个浮点数四舍五入到指定的小数位数。它可以接受两个参数:要四舍五入的浮点数和指定的小数位数(默认为 0)。
Python打印有颜色的字符串 使用Python在命令行或shell终端输出有颜色的字符串,效果如下:
Kali系统和虚拟机镜像的默认账号密码 通常,Kali的默认账号密码为 root/toor,但虚拟机镜像默认的账号密码却不一样,通常为 kali/kali;
Golang中如何使用go test进行单元测试 单元测试的意义在这里就不多说了;本文将示范如何在Go语言环境下使用go test进行简单的单元测试。