Реализация кодирования информации в QR-код на основе: ютуб туториал хабр
VERSION 1: уровень коррекции L(Low): 41 цифра / 25 симовлов латинского алфавита / 17 бинарных данных уровень коррекции M(Medium): 34 цифра / 20 симовлов латинского алфавита / 14 бинарных данных уровень коррекции Q(Quartile): 27 цифра / 16 симовлов латинского алфавита / 11 бинарных данных уровень коррекции H(High): 17 цифра / 10 симовлов латинского алфавита / 7 бинарных данных
закодировать число 1234:
- число разбивается на трехзначные числа: "123" и "4"
- каждое такое число переводится в двоичный вид (10 бит). Для последнего числа, которое может быть не трехзначным, может быть отведено 7 или 4 бита.
- далее для этой последовательности в начале надо указать хэдэр для декодера (для числовых значений "0001")
- сразу после хэдера надо указать число цифр в кодированном числе (для 1234 -> 4) в двоичном виде (для числовых значений отводится 10 бит)
- добавить терминатор в конец (4 нуля или меньше).
- дополнить последовательность до целого числа байт, добавляя в конец нули.
- далее перевести последовательность в десятичный вид
- найти генерирующий многочлен по таблице
- найти корректирующие байты
- создать битовую последовательность
- заполнить поле QR-кода
закодировать "Хаб" в двоичном виде:
- строка переводится в битовую строку
- далее для этой последовательности в начале надо указать хэдэр для декодера (для байтовых значений "0100")
- сразу после хэдера надо указать число цифр в кодированном числе (для Хаб -> 6 байт) в двоичном виде (для битовых значений отводится 8 бит)
- добавить терминатор в конец (4 нуля или меньше).
- дополнить последовательность до целого числа байт, добавляя в конец нули.
- далее перевести последовательность в десятичный вид
- найти генерирующий многочлен по таблице
- найти корректирующие байты
- создать битовую последовательность
- заполнить поле QR-кода