Я пытаюсь сгенерировать QR-коды на чрезвычайно ограниченной встроенной платформе.Все в спецификации кажется довольно простым, за исключением генерации кодовых слов с исправлением ошибок.Я посмотрел на кучу существующих реализаций, и все они пытаются реализовать кучу полиномиальной математики, которая идет прямо мне в голову, особенно в отношении полей Галуа.Самый простой способ, который я вижу, как в математической сложности, так и в требованиях к памяти, - это принципиальная схема, изложенная в самой спецификации:
С их описанием яЯ уверен, что смогу реализовать это, за исключением частей, помеченных как GF (256) и GF (256).
Они предлагают эту помощь:
Полиномиальная арифметика для QRКод рассчитывается с использованием побитовой арифметики по модулю 2 и побитовой арифметики по модулю 100011101.Это поле Галуа 2 ^ 8 с 100011101, представляющим полином модуля простого модуля x ^ 8 + x ^ 4 + x ^ 3 + x ^ 2 + 1.
, который в значительной степени греческийдля меня.
Итак, мой вопрос заключается в следующем: как проще всего выполнить сложение и умножение в этом виде арифметики поля Галуа?Предположим, что оба входных числа имеют ширину 8 бит, и мой вывод должен быть также шириной 8 бит.Несколько реализаций предварительно рассчитывают, или используют жесткий код в двух таблицах поиска, чтобы помочь с этим, но я не уверен, как они рассчитываются, или как бы я использовал их в этой ситуации.Я бы предпочел не принимать 512-байтовый удар по памяти для двух таблиц, но это действительно зависит от того, что является альтернативой.Мне действительно нужна помощь в понимании того, как выполнить одну операцию умножения и сложения в этой схеме.