了解cdrom的crc32多项式。

问题描述 投票:0回答:1

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作为多项式的值。谁能解释一下他们是怎么找到这个值的?

crc32 cd-rom
1个回答
0
投票

发布答案 。

首先,我在展开多项式的模数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 也。

© www.soinside.com 2019 - 2024. All rights reserved.