在我的数据结构课程中,我想为我的期末项目创建一个QR码生成器。然而,我对“格式化错误校正”部分有些困惑。我想使用11(L)的错误校正和100(每隔一行)的掩膜模式。由于我是本科生,我想尽可能简单地处理版本1 QR码,并使用字节编码。
然后,我不明白如何在输出数据后计算出纠错盒。
然后,我不明白如何在输出数据后计算出纠错盒。
x^8 + x^4 + x^3 + x^2 + 1 = hex 11d
the primitive α = x + 0 = hex 2
g(x) = (x-1)(x-α)(x-α^2)(x-α^3)(x-α^4)(x-α^5)(x-α^6)
由于加法等于减法等于异或,因此可以用加号替换减号:
g(x) = (x+1)(x+α)(x+α^2)(x+α^3)(x+α^4)(x+α^5)(x+α^6)
g(x) = (x+01)(x+02)(x+04)(x+08)(x+10)(x+20)(x+40)
g(x) = 01 x^7 + 7f x^6 + 7a x^5 + 9a x^4 + a4 x^3 + 0b x^2 + 44 x + 75
将19字节的数据视为一个多项式m(x)(m代表消息)。通过乘以x^7,用7个零字节填充19个字节的数据。然后将26字节的多项式除以生成多项式,余数“减去”(异或或者由于填充产生了零,则余数仅替换填充字节)填充数据的低7字节。称余数为r(x),编码结果为c(x):
r(x) = (m(x) x^7) % g(x)
c(x) = (m(x) x^7) - r(x)