Python crcmod&x27;s xorOut参数的行为与手动xor';惯性导航与制导

Python crcmod&x27;s xorOut参数的行为与手动xor';惯性导航与制导,python,crc,crc32,Python,Crc,Crc32,crcmod的状态: “xorOut–使用计算出的CRC值将最终值转换为XOR。用于某些CRC算法。默认值为零。” 从该描述中,我预计将该参数设置为非零数字(例如0xFFFFFF)相当于使用参数0获取CRC,然后使用^运算符将其与该数字异或 这不是我看到的行为。我猜错了什么?xorOut参数的实际行为是什么 这里有一些直接来自我的交互式解释器的代码。我以为最后一行是真的 >>> import crcmod >>> crc32_func_noxor = crcm

crcmod
的状态:

“xorOut–使用计算出的CRC值将最终值转换为XOR。用于某些CRC算法。默认值为零。”

从该描述中,我预计将该参数设置为非零数字(例如0xFFFFFF)相当于使用参数0获取CRC,然后使用
^
运算符将其与该数字异或

这不是我看到的行为。我猜错了什么?xorOut参数的实际行为是什么

这里有一些直接来自我的交互式解释器的代码。我以为最后一行是真的

>>> import crcmod
>>> crc32_func_noxor = crcmod.mkCrcFun(0x104c11db7, initCrc=0, rev=True, xorOut=0)
>>> crc32_func_xor = crcmod.mkCrcFun(0x104c11db7, initCrc=0, rev=True, xorOut=0xffffffff)
>>> crc32_func_noxor('12345678'.decode('hex'))^0xffffffff==crc32_func_xor('12345678'.decode('hex'))
False

从文件中:

initCrc–用于启动CRC计算的初始值。这 初始值应为初始移位寄存器值,如果 它使用反向算法,然后用最终的XOR值进行XORD。 这相当于算法返回的CRC结果 零长度字符串。默认为设置的所有位,因为 值将考虑前导零字节。从零开始 将忽略所有前导零字节

这意味着如果不指定
initCrc
,它将把寄存器初始化为最终的异或值,
xorut
。如果您希望只对结果进行异或运算,那么可以将
initCrc
设置为
xorut

重新定义“-xor”函数,使initCrc等于xorut,使其按照我的预期运行。示例比较现在返回True。谢谢