我喜欢用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?如果这是2的补码数学,它应该工作,因为位\u不能返回0-1-n。但是,这是不需要的,因为crcmod有一个可选的xorOut参数。我认为,由于反向(反射)输入和输出的可选rev参数默认为true,因此需要将其设置为false。我认为创建crc生成器的调用应该是:
B位有点棘手,因为PC上的64位算法与ARM STM32F4上的32位算法不同,但最终这个解决方案还是可行的:
相关问题 更多 >
编程相关推荐