(zxing исходный код для этого может вам помочь.)
Потребовалось бы много времени, чтобы объяснить всю математику здесь. Для исправления ошибок Рида-Соломона вам нужно поле Галуа из 256 элементов (ничего необычного — просто набор из 256 элементов, которые имеют сложение, возведение в степень и тому подобное).
Это определяется не в терминах чисел, а в терминах полиномов, все коэффициенты которых равны 0 или 1. Мы работаем с полиномами с коэффициентом 8 — для удобства они сопоставляются с 8-битными значениями. Хотя заманчиво думать об этих значениях как о числах, на самом деле это нечто иное.
На самом деле, чтобы сложение и тому подобное имели смысл, чтобы все операции возвращали вас обратно к значению в поле Галуа, все результаты вычисляются по модулю неприводимого полинома в поле. (Сейчас пропустите, что это значит.)
Чтобы ускорить выполнение операций, полезно предварительно вычислить, каковы степени полинома «x» в поле. Это альфа. Вы можете думать об этом как о «2», так как полином «x» равен 00000010, хотя это не совсем точно.
Итак, вы просто вычисляете степени x в поле. Поскольку это поле, вы таким образом поразите каждый элемент поля. Последовательность кажется степенью двойки, которую она отображает на короткое время, пока не вступит в силу первый «модуль» примитивного многочлена. Умножение на х действительно похоже на умножение на 2, но на самом деле это немного совпадение в этой области.
person
Sean Owen
schedule
29.10.2011