Чтение Micro QR Code версии М3 (кириллица, второй тип библиотек)

Данная публикация является продолжением первой части кодирования кириллицы в микрокодах версии М3.

 Этап 5. Применение полученного алгоритма для M3 АБВГ (второй тип библиотек в сети Интернет)

Так как аналогично предыдущему этапу для M3 АБВГ заготовлена битовая последовательность также заранее, а основной алгоритм очень схож (необходимо будет поменять только маску и функцию комбинации итогового кода), то воспользуемся данным обстоятельством и просто продублируем страницу М3 АБВГДЕ на M3 АБВГ с учетом замены исходного микрокода.

Копируем диапазон ячеек T4: AZ16 на странице М3 АБВГДЕ, переходим на страницу M3 АБВГ. Выбираем ячейку T4, добавляем скопированный фрагмент T4: AZ16 получаем новый анализ служебной информации (рис. 23).

Для M3 АБВГ служебная информация не дублирует служебную информацию для М3 АБВГДЕ. Необходимо использовать маску — 01.

Рисунок 23 – Служебная информация для M3 АБВГ

Рисунок 23 — Служебная информация для M3 АБВГ

Переходим ко второй составляющей — анализ рабочей области микрокода. Результат представлен на рисунке 24.

Рисунок 24 – Пример готового результата для M3 АБВГ

Рисунок 24 — Пример готового результата для M3 АБВГ

Примечание: во втором типе библиотек используется всего четыре символа в отличии от шести символов первого типа библиотек. Попытка добавить пятый символ автоматически переводило уровень М3 на уровень выше — М4. Остановимся на четырех символах.

Как уже было упомянуто ранее, данный код также полностью не совпадает с байтовым режимом и с кодовой комбинацией Таблицы ДА.3 ГОСТ. Но так как альтернативных режимов в ГОСТ просто больше нет, будем и далее использовать алгоритм декодирования последовательности бит на примере байтового режима. Начинаем разбирать секреты второго типа бесплатных библиотек сети Интернет (пример использования библиотеки). Заполним все ячейки функциями, согласно таблице 5 (если не заполнено).

В диапазоне ячеек W23: X23 указан код 10 — обозначает наличие байтового режим (таблица 2 ГОСТ. Уже хорошее начало, в отличии от первого типа библиотек. Разбираем дальше. Следующий диапазон из 4-х бит в ячейках Y23: AB23 — диапазон, отображающий битовую комбинацию — 1000 или число 8 (по количеству искомых в микрокоде символов, умноженных на 2). Получается, что для второго типа также должен использоваться полный аналог дополнительных кодовых комбинаций, как и в универсальной кодовой системе. Напомню, в UTF-8 используются 8-битовые комбинации, в UTF-16 — 16-битовые комбинации и т.д. Здесь также как и в первом типе просматривается кодовая последовательность короче. Возвращаемся к кодам Ричарда Хэмминга: мощность искусственного алфавита (кириллицы) дает порядок в 6 бит. Следовательно, первая буква искусственного алфавита будет 000000 или другая аналогичная комбинация. Находим первую последовательность из шести нулей, получаем диапазон Y27: AD27. Значит с кодом первой буквы А угадали. Осталось определить кодовый индикатор. Диапазон W29: X31 и будет индикатором — 1000010001 (ужас, и это еще один секрет программистов моделистов Ассоциации). Почему выбрано именно это число — есть только одно предположение. Число 529 — знак возможностей преображения и нового восприятия окружающего мира, шутники. Если проверить дальше по коду последовательности, то получим полный скрытый (абсолютно не по ГОСТ) алфавит.

Возвращаемся к первой букве А — в ячейку AF27: AH27 добавляем функцию =СЦЕП(Y27: AD27), получаем 000000 (рис. 25). Первый индикатор будет =СЦЕП(W27: X27; W25: AD25). Следующая буква Б алфавита — в ячейку AF31: AH31 добавляем функцию = СЦЕП(Y31: AD31), получаем последовательность 000001. Перед символом аналогичный индикатор. Третья буква В — в ячейку AF35: AH35 добавляем функцию =СЦЕП(Y35: AD35), получаем последовательность 000010. Буква Г — в ячейку AF39: AH39 добавляем функцию =СЦЕП(Y39: AD39), получаем — 000011. Как и следовало ожидать, аналогично первому типу, просматривается схожая последовательность порядковых номеров букв алфавита кириллицы от 0 до 32. Код буквы Я — 100000.

Рисунок 25 – Пример готового результата для M3 АБВГ

Рисунок 25 — Пример готового результата для M3 АБВГ

Итак, очередной секрет программистов моделистов раскрыт. На данном моменте можно остановиться, так как алфавиты библиотек обоих типов совпадают. Перейдем к буквам малого регистра первого типа библиотек.

 Этап 6. Применение полученного алгоритма для M3 абвг(второй тип библиотек в сети Интернет)

Так как заготовлена битовая последовательность для M3 абвг заранее, а основной алгоритм очень схож с М3 АБВГ (необходимо будет поменять только маску и функцию комбинации итогового кода), то воспользуемся данным обстоятельством. Продублируем страницу M3 абвгде на новый лист, добавим расшифровку кода М3 АБВГДЕ и заменим исходный микрокод.

Копируем диапазон ячеек T4: AZ16 на странице М3 АБВГ, переходим на страницу M3 абвг. Выбираем ячейку T4, добавляем скопированный фрагмент T4: AZ16 получаем новый анализ служебной информации (рис. 26).

Для M3 абвг служебная информация полностью дублирует служебную информацию для М3 АБВГ. Необходимо использовать маску — 01.

Рисунок 26 – Служебная информация для M3 абвг

Рисунок 26 — Служебная информация для M3 абвг

Переходим ко второй составляющей — анализ рабочей области микрокода. Копируем соответствующий диапазон ячеек M3 АБВГ. Результат представлен на рисунке 27.

Рисунок 27 – Пример готового результата для M3 абвг

Рисунок 27 — Пример готового результата для M3 абвг

Аналогично предыдущему этапу, в диапазоне ячеек W23: X23 указан код 10 — обозначает наличие байтового режима (таблица 2 ГОСТ). Следующий диапазон из трех бит в ячейках Y23: AA23 — диапазон, отображающий битовую комбинацию — 1000 или число 8 (по количеству искомых в микрокоде символов). Проверка в ячейке AD23 подтверждает полученное значение.

Получены аналогичные первому типу кодовые комбинации для букв кириллицы малого регистра. Буква а — 110000, буква б — 110001, в — 110010, г — 110011, д — 110110 и е — 110101. Т.е., малые буквы начинаются с числа 48 в десятичном эквиваленте.

Аналогично первому типу библиотек, необходимо внести изменения. Сравниваем полученные числовые значения со значениями на странице Code:

Ячейка

Функция

U27

=ЕСЛИ(AF27=Code! K2; Code! J2;»-»)

U31

=ЕСЛИ(AF31=Code! K3; Code! J3;»-»)

U35

=ЕСЛИ(AF33=Code! K4; Code! J4;»-»)

U39

=ЕСЛИ(AF37=Code! K5; Code! J5;»-»)

В результате получаем полное совпадение кодовой составляющей.

 P.S.: как уже стало понятно из описания и данных этапов, реализованное во второй библиотеке кодирование микрокодов аналогично первому типу никак не представлено в стандартах. Следовательно, данный алгоритм, как и для других режимов, — ноу-хау программиста или программистов моделистов программного модуля Ассоциации. Согласно ГОСТ, необходимо использовать Таблицу ДА.3 и байтовый режим.

 Удачи в декодировании байтовых последовательностей
Micro QR Code версии M3!!!

© Habrahabr.ru