微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C中的<linux / crc32.h>和<zlib.h>的crc32实现之间的区别

我在我的char* s = "pratik"上调用了两个函数

用户代码

#include <zlib.h> int main() { char *s = "pratik"; printf("%xn",crc32(0x80000000,s,strlen(s))); return 0; }

输出:66fa3c99

内核代码

在RaspBerry Pi的Linux环境中出现Windows Forms错误

将unicode UTF-8string存储在std :: string中

使用TPACKET_V2时,Vlan ID设置为0

套接字事件如何传播/转换为epoll?

为Pro Micro编写Windows驱动程序

#include <linux/crc32.h> int main() { char *s = "pratik"; u32 checksum = crc32(0x80000000,strlen(s)); printk("nChecksum --> %x",checksum); return checksum; }

输出

校验和 – > d7389d3a

为什么相同string的校验和的值不同?

GetSystemTimeZones缺lessGMT标准时间

强大的方法检测文件是否已经改变

在C#中忽略无效的邮件服务器证书

Visual Studio 2012:从现有源代码创build项目

如何在Linux上的C / C + +与ipv6 udp套接字组播?

似乎有人被标准以太网(PKZIP,ITU V.42等等)CRC-32做了事前和事后排斥或者带有0xffffffff的事实感到困扰。 所以Linux内核中的版本就没有这个功能了,而且希望应用程序能够这样做。 去搞清楚。

无论如何,您可以使用(非标准)Linux crc32()来获得与(正确的)zlib crc32()相同的结果,因此:

crc_final = crc32(crc_initial ^ 0xffffffff,buf,len) ^ 0xffffffff;

事实上,完全相同的代码将允许您使用zlib crc32()来复制Linux crc32() 。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐