Кодирование QR кодов
После того, как получена строка с исходными данными, начинается процесс генерации бинарной строки. В начало бинарной строки X добавляются 4 технических бита, которые определяются на основе кодируемого типа данных. Список возможных комбинаций включает в себя: 0001 — числовые данные, 0010 — буквенно-символьные данные, 0100 — бинарная информация, 1000 — специальные японские иероглифы. В данной… Читать ещё >
Кодирование QR кодов (реферат, курсовая, диплом, контрольная)
Генерация бинарной строки
Важной особенностью QR кодов является их симметричность относительно кодирования и декодирования. В связи с этим легче начинать рассмотрение с процесса кодирования, а процесс декодирования будет выполняться в обратном порядке.
Процесс кодирования QR кодов делится на несколько главных этапов.
Первый этап заключается в том, что строка с входными данными предварительно обрабатывается и приводится к стандартному для QR кодов виду.
После того, как получена строка с исходными данными, начинается процесс генерации бинарной строки. В начало бинарной строки X добавляются 4 технических бита, которые определяются на основе кодируемого типа данных. Список возможных комбинаций включает в себя: 0001 — числовые данные, 0010 — буквенно-символьные данные, 0100 — бинарная информация, 1000 — специальные японские иероглифы. В данной работе рассматривались данные только численного и символьного типа, для того, чтобы упростить процесс отображения результатов.
На следующем этапе генерации подсчитывается общее количество символов в исходной строке и десятичное число преобразуется в бинарное представление. (например, если исходное сообщение содержит 11 символов, включая пробелы, это будет значить то же самое, что бинарная строка 1011). Кроме того, необходимо определить длину генерируемой бинарной строки согласно версионному стандарту компании Denso Wave [4]. (например, по версии 1 QR кода символьная информации должна состоять из 9 бит). Таким образом, полученная ранее строка 1011 должна быть дополнена нулями с левой стороны, чтобы получилось 9 бит в итоге. После получения этих 9 бит, они конкатенируются со строкой X с правой стороны.
Для того чтобы закодировать символьный тип данных, исходная строка должна быть разбита на пары символов. Затем нужно узнать значение из ASCII таблицы для первого символа в каждой из пар, это значение умножается на число 45 (получено экспериментальным путем и признано стандартом согласно спецификации), затем берется значение согласно той же ASCII таблице для второго символа в каждой из пар. Эти два значения суммируются, и каждая пара символов имеет свое численное значение. Полученные числа должны быть последовательно представлены в виде 11-битных чисел в бинарном виде. Если в строке имеется нечетное количество символов, то берется значение для этого символа из ASCII и конвертируется в 6-битное бинарное число. Все полученные блоки также конкатенируются с генерируемой строкой X с правой стороны.
После выполнения этапов, описанных выше, необходимо опять обратиться к версионной таблице компании DENSO WAVE [4], и определить необходимую длину конечной бинарной строки. Если длина строки X меньше необходимой, с правой стороны добавляется от 1 до 4 бит в зависимости от того, сколько символов не хватает. Сгенерированная строка X разбивается на 8-битные токены (блоки) и, если последний блок меньше 8 бит, то к нему дописываются нули с правой стороны.
На заключительном этапе генерации бинарной строки, вспомогательные токены конкатенируются со строкой X. В случае, если сгенерированная строка меньше положенного (согласно версионной таблице) 2 типа 8 битных блоков добавляются в конец сгенерированной строки по очереди, пока не будет необходимого числа бит: 11 101 100 и 10 001. После того, как сгенерированная строка содержит необходимое число бит, бинарная строка считается окончательно сгенерированной и может быть использована на следующих этапах генерации QR кодов.