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 pdb调试器详细教程 在Python可使用一个叫pdb的模块用于调试代码;pdb模块为Python程序定义了一个交互式的源代码调试器,你可通过它设置断点、逐行执行、堆栈检查等等常用调试功能;
让自己的网页在手机QQ中以卡片的方式分享出去 在使用QQ进行聊天的过程中,发送自己网页的链接时(不是打开网站后分享给好友,单单指将网页链接以文本的形式发送出去),默认情况下是不会以卡片形式显示的,那么如何让别人看到的是卡片呢。
如何查看CPU序列号 请注意,某些CPU可能没有序列号,或由于制造商实施的安全功能而无法获取序列号。此外,序列号可能不是针对您特定的CPU型号而独有的,可能在多个CPU之间共享。
requests实现更复杂的POST 通常,你想使用requests模拟HTML中的表单内容。你只需要将一个字典传递给 data 参数;requests会将你的数据字典自动编码为表单的形式。
Python 获取网卡的MAC地址 获取网卡MAC地址可以使用Python标准库中的uuid模块;uuid模块提供了getnode()函数,用于获取机器的MAC地址。这个函数返回一个整数值,表示机器的48位MAC地址,其中高16位可能包含厂商信息。
Python locals()函数 在 Python 中,locals() 是一个内置函数,用于返回当前作用域中的所有局部变量的字典。在函数内部,locals() 返回该函数的局部变量。在模块级别上,locals() 返回全局变量。