我有一个生成多项式,必须转换为二进制数才能在我的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是如何从这些方程式中得出的。
答案 0 :(得分:2)
这些似乎是反向二进制表示法。
当表示CRC多项式时,每个项映射到一位。此外,最高阶项是隐含的,并且被省略。
分解你的两个例子:
1 + x + x^3 = 1101
1 + x + x^2 + x^3 + x^6 + x^7 = 11110011
砍掉最高阶的任期:
1101 -> 110 = 0x06
11110011 -> 1111001 = 0x79