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

Raunaq Kochar:

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

用户代码:

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

输出:66fa3c99

内核代码:

#include <linux/crc32.h>

int main()
{
    char *s = "pratik";

    u32 checksum = crc32(0x80000000, s, strlen(s));
    printk("\nChecksum --> %x", checksum);

    return checksum;
}

输出:

校验和-> d7389d3a

为什么相同字符串上的校验和的值不同?

马克·阿德勒(Mark Adler):

似乎有人对标准以太网(PKZIP,ITU V.42等)CRC-32进行前后异或运算感到不安0xffffffff因此,Linux内核中的版本将其排除在外,并希望应用程序能够做到这一点。去搞清楚。

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

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

实际上,使用完全相同的代码,您还可以crc32()使用zlib 复制Linux crc32()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Linux

匹配STM32F0和zlib中的CRC32

来自分类Dev

Zlib Ruby和Python库中的CRC32校验和不同

来自分类Dev

Crc32 C实现-不起作用

来自分类Dev

Python中的CRC32(vs CRC32b)

来自分类Dev

Java和Go中的不同CRC32值

来自分类Dev

如何使用zlib计算CRC32-C校验和

来自分类Dev

使用缓冲区在Python中的二进制文件上计算CRC / CRC32哈希/校验和

来自分类Dev

如何使用Ruby从大型文件中获取CRC32校验和?

来自分类Dev

CRC32(C)可以返回到0吗?

来自分类Dev

如何计算与php中的CRC32函数兼容的arrayBuffer的CRC(来自javascript中的FileReader)?

来自分类Dev

将字符串中每个字符的CRC32校验和值添加到数组中

来自分类Java

java.util.zip.CRC32中的CRC-32实现

来自分类PHP

在PHP中为Google Cloud Storage对象计算md5Hash或crc32

来自分类Javascript

JavaScript CRC32

来自分类Dev

快速CRC32算法实现逆序位

来自分类Linux

Linux中unistd.h和sys / types.h之间的区别

来自分类Linux

LINUX C中stdout和STDOUT_FILENO之间的区别

来自分类Dev

无法让gcs为上传的对象返回md5hash和crc32c

来自分类Dev

C-CRC32校验和与以太网帧校验序列上的Wireshark不匹配

来自分类Dev

已附加CRC数据的已CRC32处理的数据的CRC32

来自分类Dev

在C / C ++中计算32位CRC查找表

来自分类Dev

CRC32未正确计算

来自分类Dev

CRC32对于不同的输入是相同的

来自分类Dev

STM 32上的CRC32 CRC外设:相同数据的字节和字流给出不同的结果

来自分类Linux

在Linux中,“ python -c'print'”和“(python -c'print'; cat)”之间有什么区别

来自分类Dev

Linux nvme驱动程序中core.c和pci.c之间的区别

来自分类Dev

UINT32_C和uint32_t之间的区别

来自分类Linux

Linux Asynch IO-aio.h和libaio.h之间的区别

来自分类Linux

标头<linux / in.h>和<netinet / in.h>之间的实际区别是什么?

TOP 榜单

  1. 1

    来自Microsoft Office加载项taskpane.js的MySQL驱动程序模块的空引用

  2. 2

    任务':app:minifyReleaseWithR8'.java.lang.NullPointerException的执行失败(无错误消息)

  3. 3

    OpenJDK的和AdoptOpenJDK的区别

  4. 4

    如何解决npm问题?

  5. 5

    GitHub文件夹上有一个白色箭头

  6. 6

    在python中交互式旋转3D图-Matplotlib-Jupyter Notebook

  7. 7

    在熊猫中每隔一列取行平均值(python)

  8. 8

    未定义:grpc.SupportPackageIsVersion7 grpc.ServiceRegistrar

  9. 9

    TypeScript泛型错误:算术运算的左侧必须为“ any”,“ number”,“ bigint”类型

  10. 10

    无法导入大猩猩/mux(github.com/gorilla/[email protected]:在go.mod中明确要求,但在vendor / modules.txt中未标记为明确)

  11. 11

    tensorflow:仅在可用val_acc的情况下可以保存最佳模型,跳过

  12. 12

    使用moment.js获取不同时区的当前时间

  13. 13

    Nuxt.JS:如何在页面中获取路由URL参数

  14. 14

    如何在k8s中连接到我的mysql pod或mysql的节点?

  15. 15

    java.lang.NoClassDefFoundError:无法初始化类org.bytedeco.javacpp.avutil

  16. 16

    重命名由android 10中的应用程序创建的Mediastore的文件。正在使用Android API 30,但在API 29中显示错误

  17. 17

    Golang time.Parse()得到0001-01-01 00:00:00 +0000 UTC

  18. 18

    “无法上传。请重试。” Google Play控制台上的错误

  19. 19

    requestLegacyExternalStorage在Android 11中不起作用-API 30

  20. 20

    TypeScript TS7015:元素隐式地具有“ any”类型,因为索引表达式不是“ number”类型

  21. 21

    如何处理这个git警告?“不建议在不指定如何协调分歧分支的情况下进行拉动”

热门标签

归档