QR#3556

QR

1 секунда
64 мегабайти
Легка

QR-коди (найменший з яких має розмір на піксель, як показано нижче) є квадратними масивами чорних і білих пікселів (модулів). Вони включають в себе шаблони виявлення позиції (квадратні шаблони "бичаче око"), шаблони синхронізації (чергування чорних і білих рядків), шаблони вирівнювання у більших QR-кодах, інформацію про формат (крапчасті пікселі), інформацію про версію у більших QR-кодах, а також кодові слова даних і корекції помилок (сірі блоки з 8 пікселів).

QR-код розміром на містить кодових слів даних і корекції помилок. На найнижчому рівні корекції помилок для цього коду є кодовими словами даних, а 7 - кодовими словами корекції помилок. Дані можуть бути закодовані як числові з числами на біт, як алфавітно-цифрові з символами на 11 біт, як 8-бітові байти або як Канжі з бітами на символ. Дані кодуються в групах: режим, кількість символів, біти даних символів. Режим може змінюватися в потоці даних. Режим вказується 4-бітовим кодом, а кількість символів - змінною кількістю бітів в залежності від режиму та розміру QR-коду. Для коду на кількість бітів символів є:

Назва режиму

Біти режиму

Біти кількості

Числовий

0001

10

Алфавітно-цифровий

0010

9

8-бітовий байт

0100

8

Канжі

1000

8

Завершення

0000

0

Весь потік даних закінчується кодом завершення, який може бути обрізаний, якщо немає достатньо місця. Будь-яке частково заповнене кодове слово після коду завершення заповнюється бітами 0. Будь-які залишкові кодові слова встановлюються на 11101100, за якими слідує 00010001, чергуючись. Числові рядки кодуються по 3 цифри за раз. Якщо залишаються цифри, 2 цифри кодуються в 7 біт або 1 цифра в 4 біти. Наприклад:

12345678 -> 123 456 78 -> 0001111011 0111001000 1001110

Префікс з режимом (0001) і кількістю (8 -> 0000001000) становить (4 + 10 + 10 + 10 +7) біт:

0001 0000001000 0001111011 0111001000 1001110

Алфавітно-цифрові рядки кодують символи (представляє пробіл):

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*+-./:

як числа від 0 до 44, потім два символи кодуються в 11 біт:

* 45 +

якщо кількість символів непарна, останній символ кодується в 6 біт. Наприклад:

AC-42 -> (10,12,41,4,2) -> 10*45+12=462, 41*45+4=1849, 2->00111001110 11100111001 000010

Префікс з режимом і кількістю становить (4 + 9 + 11 + 11+ 6) біт:

0010 000000101 00111001110 11100111001 000010

8-бітові двійкові та Канжі режими будуть простими для цілей цієї задачі. Канжі коди будуть просто непрозорими 13-бітовими кодами; вам не потрібно декодувати символи, які вони представляють, лише шістнадцяткові значення. Наприклад:

8 біт 0x45 0x92 0xa3 -> 01000101 10010010 10100011

Префікс з режимом і кількістю становить (4 + 8 + 8 + 8 + 8) біт:

0100 00000011 01000101 10010010 10100011

Канжі 0x1ABC 07x0345 -> 1101010111100 0001101000101

Префікс з режимом і кількістю становить (4 + 8 + 13 + 13) біт:

1000 00000010 1101010111100 0001101000101

Щоб проілюструвати формування вмісту з 19 кодових слів QR-коду, об'єднайте перші 3 послідовності вище (для числових, алфавітно-цифрових та байтів). Об'єднайте біти, розділіть на 8-бітові кодові слова, додайте кодове слово завершення, будь-які заповнювальні біти та заповнювальні байти (41 + 41 + 36 біт даних + 4 біт код завершення = 122 -> потрібно 6 заповнювальних біт, щоб отримати 16 байтів, і щоб заповнити 19 байтів, потрібно 3 заповнювальні байти):

0001 0000001000 0001111011 0111001000 1001110

0010 000000101 00111001110 11100111001 000010

0100 00000011 01000101 10010010 10100011

0000 000000 11101100 00010001 11101100

розділіть на 8-бітові кодові слова:

00010000 00100000 01111011 01110010 00100111 00010000 00010100 11100111

01110011 10010000 10010000 00001101 00010110 01001010 10001100 00000000

11101100 00010001 11101100 -> HEX 10207B72271014E77390900D164A8C0EC11EC

Напишіть програму, щоб прочитати 19 кодових слів і вивести відповідні дані.

Вхідні дані

Перша лінія введення містить одне ціле число (1 \le P \le 1000), яке є кількістю наборів даних, що слідують. Кожен набір даних - це один рядок введення, що складається з номера набору даних , за яким слідує один пробіл і шістнадцяткових цифр, що дають байтів даних QR-коду. Дійсні шістнадцяткові цифри - це 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E і F.

Вихідні дані

Для кожного набору даних є один рядок виходу. Він містить номер набору даних (), за яким слідує один пробіл, кількість декодованих символів QR у результаті, один пробіл і рядок символів, що відповідає даним QR-коду. У вихідному рядку друковані символи ASCII (у діапазоні 0x20 до 0x7e) друкуються як символи ASCII, ЗА ВИНЯТКОМ того, що зворотний слеш (\) друкується як \\, а знак фунта (#) друкується як \#. Непечатні -бітові дані виводяться як \xx, де x - це шістнадцяткова цифра (наприклад, \AE). Непечатні -бітові дані - це будь-яке значення, яке менше за ASCII значення пробілу (0x20) або більше за 0x76. -бітові Канжі значення друкуються як #bxxx, де b - це 0 або 1, а x - це шістнадцяткова цифра (наприклад, #13AC).

Приклади

Приклад 1

Loading
Loading