在APPNOTE.txt的第4.4.7节(CRC-32)中您可以找到
CRC 的“魔数”是 0xdebb20e3。
但是,CRC-32 的正则多项式(0x04C11DB7)可以正常工作。位反映为0xEDB88320。我不知道 0xdebb20e3 是什么。
我尝试反射和反转 0xdebb20e3 的位,将 LE → BE 转换,反之亦然,但没有得到 0x04c11db7。 0xc704dd7b(反转)、0x38fb2284(反转+反转)、0x2144df1c(反转);甚至不相似。
这是原始消息的 CRC-32 的补充,任何原始消息,其 CRC-32 都以小端顺序附加。
因此,如果我获取由 ASCII 数字“123456789”组成的九字节消息,我会得到
0xcbf43926
。如果我获取 13 字节消息“123456789”,后跟四个字节0x26 0x39 0xf4 0xcb
,我会得到 0x2144df1c
。其补语是 0xdebb20e3
。
对于任何给定的 CRC 定义来说,这是一个常量,称为“残差”。您可以在 CRC 的描述中找到它这里:
width=32 poly=0x04c11db7 init=0xffffffff refin=true refout=true xorout=0xffffffff check=0xcbf43926 residue=0xdebb20e3 name="CRC-32/ISO-HDLC"