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

分类: 计算机技术
推荐阅读:
Golang安装gin库的详细教程及错误解决方法 Gin是用Go(Golang)编写的Web框架。 它具有类似于martini的API,其性能比httprouter快40倍。 如果您需要性能和良好的生产率,您会喜欢Gin
Wireshark常用过滤器 Wireshark是一款常用的网络协议分析工具,提供了很多过滤器用于筛选和分析数据包。以下是一些常用的Wireshark过滤器:
Rust语言中获取数组的大小 Rust语言中,数组提供len()方法可获取数组中的元素数量,即数组的大小;
Rust loop循环详细用法 当需要多次执行同一段代码时,循环就能很好的解决问题;Rust语言中支持多种循环,本文将介绍 loop 循环;
Linux系统中删除特定文件外的所有文件 有这么个场景,如果你想删除某个目录下除了指定文件外的所有文件,你会怎么做呢?在Linux系统下,你可以只需要一条命令就可实现这个功能;
Python实现二分法查找(binary search) 对于从小到大有序排列的元素组合,使用二分法查找(binary search)是一种效率较高的算法,其大致流程如下: