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

分类: 计算机技术
推荐阅读:
一定有你不知道的Python技巧 Python一直以代码简洁著称;想写出艺术般的代码,需要你掌握各种Python技巧,这些技巧有些是语言特性,有些则是广大程序员的经验心得;今天作者就给大家网罗了一些Python技巧,一起来看看吧。
Rust 宏编程 Rust 的宏编程是一种强大的元编程技术,允许您在编译时生成代码,创建自定义语法,以及进行各种代码转换。在 Rust 中,标准宏是内置于 Rust 标准库中的宏。这些宏是 Rust 语言提供的一部分,可直接在任何 Rust 代码中使用,无需额外的导入或引入其他依赖。
Python reversed()函数 在 Python 中,reversed() 函数用于反转序列(例如列表、元组、字符串等)中的元素,并返回一个迭代器。可以将这个迭代器转换为列表、元组或其他类型的序列。
PySide6 keyPressEvent:处理键盘按键按下的方法 keyPressEvent是在PySide6中用于处理键盘按键按下事件的方法。当用户在应用程序的窗口中按下键盘上的按键时,会触发keyPressEvent方法。您可以在此方法中编写代码,以响应按键事件并执行相应的操作。
Python内置函数大全 该文档详细讲解了几乎所有的Python内置函数,并提供了相关示例;
Golang在Windows环境下编译出Linux环境下运行的可执行程序 我们可以使用这种方法在Windows系统下编译出其它平台的可执行程序,相反,也可以在Linux系统下编译出Windows平台的可执行程序。