我有一个生成多项式,需要将其转换为二进制数字并在我的CRC代码中使用。例如下面的这些是正确转换的,我想知道如何做到。
这些用于ROHC CRC计算:
用于3位CRC的多项式为: C(x) = 1 + x + x^3
这是0x06 用于7位CRC的多项式为: C(x) = 1 + x + x^2 + x^3 + x^6 + x^7
这是0x79
想知道如何从这些方程中推导出0x06和0x79。
我有一个生成多项式,需要将其转换为二进制数字并在我的CRC代码中使用。例如下面的这些是正确转换的,我想知道如何做到。
这些用于ROHC CRC计算:
用于3位CRC的多项式为: C(x) = 1 + x + x^3
这是0x06 用于7位CRC的多项式为: C(x) = 1 + x + x^2 + x^3 + x^6 + x^7
这是0x79
想知道如何从这些方程中推导出0x06和0x79。
这些似乎是以二进制反转表示法表示的。
当表示CRC多项式时,每个术语映射到一个比特。此外,最高位项是隐含的,并被省略。
因此,分解您的两个示例:
1 + x + x^3 = 1101
1 + x + x^2 + x^3 + x^6 + x^7 = 11110011
去掉最高次项:
1101 -> 110 = 0x06
11110011 -> 1111001 = 0x79
0b11001111 => 0xCF
而且这确实是维基百科上所说的。也许你需要在某个地方进行微调。 - leppie