【问题标题】:Understanding crc32 polynomial of cdrom了解cdrom的crc32多项式
【发布时间】:2020-04-18 12:58:57
【问题描述】:

CDROM 数据使用使用 Reed-Solomon 的第 3 层错误检测和使用 32 位 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 source code 使用 0x08001801 作为多项式值。有人可以解释他们是如何找到这个价值的吗?

【问题讨论】:

    标签: crc32 cd-rom


    【解决方案1】:

    发布答案:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 2013-09-14
      • 2011-01-14
      相关资源
      最近更新 更多