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