https://www.thonky.com/qr-code-tutorial/error -correction-coding#step-9-divide-the-message-polynomial-by-the-generator-polynomial
Эта ссылка показывает, как рассчитать байты коррекции, и это то, что я использую в качестве ссылку для реализации в моем коде.
Моя проблема в том, что я пытался выполнить тот же шаг и инструкцию, но не получил правильного результата.
Вот мой код для расчета байтов коррекции. Моя функция получила два массива.
Массив messagePolynomial содержит контекст QR-кода, где каждый символ находится в ASCII-коде. Генератор Array имеет полином генератора. Что мне нужно сделать, так это через полиномиальное деление получить байты коррекции. ссылка выше объяснит это подробно.
Сейчас я работаю над прототипом с фиксированным размером и длиной.
Размер Qr-кода это 21 x 21 версия 1 с уровнем коррекции L (низкий), что означает, что мне нужно 7 байтов коррекции, чтобы мой QR-код стал функционировать.
Мой полином-генератор выглядит так [0, 87, 229, 146, 149, 238, 102, 21];
Мой полином сообщения выглядит так [226, 72, 250, 250, 61, 5, 43, 61, 155, 250, 195, 138]< /p>
Значения указаны в алфавитной записи.
Код: Выделить всё
private int[] CalculateCorrectionBytes(int[] messagePolynomial, int[] generator)
{
int[] log = buildLog(buildAntiLog());
int[] antilog = buildAntiLog();
int[] correctionBytes = new int[generator.Length];
int[] message = (int[])messagePolynomial.Clone();
Console.WriteLine($"Generator polynomial in Alpha notation: [{string.Join(", ", generator)}]\n");
for (int i = 0; i < message.Length; i++)
{
Console.WriteLine($"{i}. Message character as integer: {message[i]}");
message[i] = log[message[i]];
Console.WriteLine($"{i}. Message character in Alpha notation: {message[i]}");
Console.WriteLine("________________________________");
}
for (int i = 0; i < 5; i++)
{
int leadTerm = message[0];
Console.WriteLine($"\n>>>>> {i + 1}. Calculation step!
Подробнее здесь: [url]https://stackoverflow.com/questions/79065794/calculating-correction-bytes-for-my-qr-code[/url]
Мобильная версия