2012-01-13 3897 views
1

我有一個生成多項式,必須轉換爲二進制數才能在我的CRC代碼中使用。例如,這些是正確轉換的那個,我想知道它們是如何完成的。將生成多項式轉換爲二進制數

這些都是用於ROHC CRC計算:

多項式被用於3位CRC是: C(X)= 1 + X + X^3

這是0×06 的到用於7位CRC多項式是: C(X)= 1 + X + X^2 + X^3 + X^6 + X^7

這是0x79的

想知道如何從這些方程得出0x06和0x79。

+0

Bitmasking吧? – leppie 2012-01-13 05:01:19

+0

你從哪裏得到這些數字? '0b11001111 => 0xCF'這確實是維基百科所說的。也許你需要在某個地方稍作調整。 – leppie 2012-01-13 05:06:12

+1

這些數字取自RFC for ROHC – Vijay 2012-01-17 11:36:42

回答

2

這些似乎是顛倒的二進制表示法。

當表示CRC多項式時,每個項映射到一個位。此外,最高階的術語是隱含的,並且被省略。

所以打破你的兩個例子:

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

斬去最高階項:

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

yeh,這是正確的,刪除​​了最高的順序,因爲它指定CRC的類型,如x^7 =>它是CRC7,不應該考慮該位。 – Vijay 2012-01-17 11:38:01