gpt4 book ai didi

python - 如何在python中重建libmem_crc32_direct CRC函数?

转载 作者:行者123 更新时间:2023-11-30 14:37:49 26 4
gpt4 key购买 nike

我喜欢重建libmem_crc32_direct python 中的函数。

我之前使用过crcmod python 包。所以我喜欢用它来设置 crc 生成器。

C 代码如下所示:

uint32_t crc_process_chunk(uint8_t* data, uint32_t len) {
return ~libmem_crc32_direct(data, len, 0xFFFFFFFF);
}

我的Python代码到目前为止看起来:

def bit_not(n, numbits=8):
return (1 << numbits) - 1 - n

def getCRC(imageBA):
crcGen = crcmod.mkCrcFun(0x104C11DB7, initCrc=0xFFFFFFFF)
val = crcGen(imageBA)
val = bit_not(val, 32)
return val

python代码的返回值与c中的返回值不同。所以我想我犯了一些错误。

有什么想法吗?

最佳答案

不是 (1 << numbits) == 0 吗?如果这是二进制补码数学,它应该可以工作,因为 bit_not 可以返回 0-1-n。但是,这不是必需的,因为 crcmod 有一个可选的 xorOut 参数。我认为,由于反向(反射)输入和输出的可选 rev 参数默认为 true,因此需要将其设置为 false。我认为创建 crc 生成器的调用应该是:

    crcGen = crcmod.mkCrcFun(0x104C11DB7, initCrc=0xFFFFFFF, rev=False, xorOut=0xFFFFFFFF)

关于python - 如何在python中重建libmem_crc32_direct CRC函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56993087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com