我正在尝试在极其有限的嵌入式平台上生成 QR 码。除了生成纠错码字之外,规范中的所有内容似乎都相当简单。我查看了一堆现有的实现,它们都试图实现一堆让我头疼的多项式数学,特别是关于伽罗瓦域。在数学复杂性和内存要求方面,我能看到的最直接的方式是规范本身中列出的电路概念:
根据他们的描述,我相当有信心可以实现这一点,除了标记为 GF(256) 加法和 GF(256) 乘法的部分。
他们提供以下帮助:
QR 码的多项式算法应使用按位模 2 算法和按字节模 100011101 算法计算。这是一个 2^8 的伽罗瓦域,其中 100011101 表示该域的素数模多项式 x^8+x^4+x^3+x^2+1。
这对我来说几乎都是希腊语。
所以我的问题是:在这种伽罗瓦域算术中执行加法和乘法的最简单方法是什么?假设两个输入数字都是 8 位宽,我的输出也需要是 8 位宽。几个实现预先计算,或者在两个查找表中硬编码来帮助解决这个问题,但我不确定这些是如何计算的,或者在这种情况下我将如何使用它们。我宁愿不为这两个表占用 512 字节的内存,但这实际上取决于替代方案是什么。我真的只需要帮助了解如何在这个电路中进行单次乘法和加法运算。