我有一个生成多项式,它必须被转换成二进制数才能在我的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
关于c - 将生成多项式转换为二进制数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8846131/