CDROM数据使用Reed-Solomon的第三层错误检测和使用32_bits CRC多项式的EDC。
该 ECMA 130 标准对EDC CRC多项式的定义如下(第16页,14.3)。
P(X) = (X^16 + x^15 + x^2 + 1).(x^16 + x^2 + x + 1)
和
先使用数据字节中的最小有效位。
通常情况下,将多项式转化为其整数值形式是非常直接的。使用模数数学,扩展多项式必须是 P(X) = x^32 + x^31 + x^18 + x^17 + x^16 + x^15 + x^4 + x^3 + x^2 + x + 1
因此,该值为 0x8007801F
最后一句话的意思是,多项式是反向的(如果我没弄错的话)。
但到目前为止,我还没能得到正确的值。在 Cdrtools源码 用0x08001801作为多项式的值。谁能解释一下他们是怎么找到这个值的?
发布答案 。
首先,我在展开多项式的模数2代数上犯了错误。非模数展开式是 :
P(X) = x^32 + x^31 + 2x^18 + 2x^17 + 3x^16 + x^15 + x^4 + x^3 + 2x^2 + x + 1
在模数2代数中,任何偶数系数都等于0,奇数系数等于1,所以最终展开的多项式是 。
P(X) = x^32 + x^31 + x^16 + x^15 + x^4 + x^3 + x + 1
所以,实际值是 0x8001801B
第二,我看错了cdrtools的来源,它们的值是 0x8001801B
也。