将生成多项式转换为二进制数

3

我有一个生成多项式,需要将其转换为二进制数字并在我的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。


你从哪里得到这些数字的?0b11001111 => 0xCF 而且这确实是维基百科上所说的。也许你需要在某个地方进行微调。 - leppie
1
数字取自ROHC的RFC。 - Vijay
1个回答

3

这些似乎是以二进制反转表示法表示的。

当表示CRC多项式时,每个术语映射到一个比特。此外,最高位项是隐含的,并被省略。

因此,分解您的两个示例:

1 + x + x^3                    = 1101
1 + x + x^2 + x^3 + x^6 + x^7  = 11110011

去掉最高次项:

1101     -> 110      = 0x06
11110011 -> 1111001  = 0x79

是的,这是正确的,最高位被移除了,因为它指定了CRC类型,例如x^7 => 这是CRC7,那一位不应该被考虑。 - Vijay
有必要删除最高阶项吗? - JasonHsieh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接