2023 [11] QR-код

QR код – это монохромная картинка, в которой закодированы некоторые данные (алфавитно-цифровые символы, побайтовые данные). QR-код состоит из закрашенных и незакрашенных модулей. Закрашенный модуль соответствует «1», незакрашенный – «0».
QR-код типа Micro-QR имеет размер 15x15 модулей и состоит из следующих компонентов (см. рисунок 1):
(1) – поисковый блок (чёрный квадрат размером 3 на 3 модуля, который окружён рамкой из белых модулей, которая окружена рамкой из чёрных модулей, которая окружена рамкой из белых модулей только с внутренних сторон) – расположен в левом верхнем углу;
(2) – горизонтальная синхрополоса (начинаются от самого верхнего правого белого модуля поискового блока и идет, чередуя чёрные и белые модули, по горизонтали);
(3) – вертикальная синхрополоса (начинаются от самого нижнего левого белого модуля поискового блока и идет, чередуя чёрные и белые модули, по вертикали);
(4) – служебная информация, содержащая тип и версию QR-кода (7 бит) – продублирована 2 раза (дубль1 слева-направо, дубль2 снизу-вверх, значение i-х битов в дублях совпадают);
(5) – заголовок данных, содержащий формат данных (1110 – алфавитно-цифровые символы);
(6) – размер данных в символах (8 бит) – число от 0 до 15;
(7) – сами данные и байты заполнителя (при необходимости).


Рисунок 1 – Структура QR-кода

Данные разбиты на блоки по 8 бит. Сами данные закодированы следующим образом: каждому символу ставится в соответствии число из таблицы (см. таблицу 1) размером 6 бит (B1, B2, … , B6). Оставшиеся 2 бита (С7, С8) заполняются значением контрольной суммы по формуле:

C7 = B1 ⊕ B3 ⊕ B4,
C8 = B2 ⊕ B5 ⊕ B6,

где ⊕ – сложение по модулю 2 (исключающее ИЛИ, XOR):

0 ⊕ 0 = 0
0 ⊕ 1 = 1
1 ⊕ 0 = 1
1 ⊕ 1 = 0

Таблица 1 – Кодирование/декодирование символов для алфавитно-цифрового режима

Максимальная длина строки в microQR – 15 символов.
Если данных меньше, то оставшиеся 8-битные блоки заполняются масками 2-х типов, чередуя друг друга: 1101 1100, 0001 0001, …, пока не заполнится всё пространство данных QR кода. 
Заполнение начинается с правого нижнего угла, идёт в пределах столбика справа-налево, снизу-вверх. Если текущий модуль занят (например, полосой синхронизации, служебными данными или поисковым блоком), то он пропускается. Если достигнут верх столбика, то движение продолжается с верхнего правого угла столбика, который расположен левее, и идёт сверху вниз. Достигнув низа, движение продолжается от нижнего правого угла столбика, который расположен левее, и идёт снизу-вверх. И так далее, пока всё свободное пространство не будет заполнено. Нумерация и порядок заполнения модулей QR-кода представлен на рис.2.


Рисунок 2 – Последовательность битов в блоках QR-кода

По сети передавался QR-код, содержащий некоторое сообщение. Однако в ходе передачи строки QR-кода перепутались. Восстановите исходный QR-код и извлеките сообщение.


Показать подсказку

Показать решение

Показать ответ




<< Назад в раздел (Все задания)

Ваше сообщение получено!