7.4.1 Последовательность данных
Входные данные преобразуются в двоичный поток, состоящий из одного или нескольких сегментов, каждый из которых кодируется в собственном режиме. Двоичный поток начинается с индикатора режима и в ECI по умолчанию. Если с самого начала требуется ECI, отличающаяся от ECI по умолчанию, то двоичный поток должен начинаться с заголовка ECI перед первым сегментом.
Заголовок ECI (если присутствует) состоит из:
- индикатора режима ECI (4 бита)
- обозначения ECI (8, 16 или 24 бита)
Заголовок ECI начинается с первого (старшего) бита индикатора режима ECI и завершается последним (младшим) битом обозначения ECI.
Остальной двоичный поток может состоять из нескольких сегментов, каждый из которых состоит из:
- индикатора режима;
- индикатора числа знаков;
- двоичного потока данных.
Каждый сегмент режима начинается с первого (старшего) бита индикатора режима и заканчиваться последним (младшего) битом двоичного потока данных. Между сегментами нет явного разделителя, поскольку их длина однозначно определяется правилами действующего режима и числом входных знаков данных.
Чтобы закодировать последовательность входных данных в текущем режиме, следует повторно использовать этапы в 7.4.2-7.4.7. В таблице 2 указаны индикаторы для каждого режима. В таблице 3 приведен размер индикатора числа знаков, который может иметь различные значения в зависимости от используемого режима и версии символа.
Таблица 2 - Индикаторы режима для QR Code
Режим | Символы QR Code | Символы Micro QR Code | |||
версия | любой версии | M1 | M2 | M3 | M4 |
Длина индикатора режима, биты | 4 | 0 | 1 | 2 | 3 |
ECI | 0111 | n/a | n/a | n/a | n/a |
Числовой | 0001 | n/a | 0 | 00 | 000 |
Алфавитно-цифровой | 0010 | n/a | 1 | 01 | 001 |
Байтовый | 0100 | n/a | n/a | 10 | 010 |
Кандзи | 1000 | n/a | n/a | 11 | 011 |
Структурированное соединение | 0011 | n/a | n/a | n/a | n/a |
FNC1 | 0101 (1-я позиция) | ||||
1001 (2-я позиция) | n/a | n/a | n/a | n/a | |
Ограничитель (конец сообщения) | 0000 | 000 | 00000 | 0000000 | 000000000 |
См. 7.4.8.2 и 7.4.8.3. |
Таблица 3 - Число битов в индикаторе числа знаков для QR Code
Версия | Числовой режим | Алфавитно-цифровой режим | Байтовый режим | Режим кандзи |
M1 | 3 | n/a | n/a | n/a |
M2 | 4 | 3 | n/a | n/a |
M3 | 5 | 4 | 4 | 3 |
M4 | 6 | 5 | 5 | 4 |
1-9 | 10 | 9 | 8 | 8 |
10-26 | 12 | 11 | 16 | 10 |
27-40 | 14 | 13 | 16 | 12 |
Поток данных в законченном символе завершается ограничителем, который состоит от 3 до 9 нулевых битов (см. таблицу 2), но который может отсутствовать, если после данных оставшаяся емкость символа меньше, чем необходимая длина ограничителя в битах. Ограничитель не является индикатором режима.
7.4.2 Режим интерпретации в расширенном канале (ECI)
7.4.2.1 Общие положения
Этот режим используется для кодированных данных, подчиненных альтернативным интерпретациям значений байтов (например, альтернативные наборы знаков) в соответствии со спецификацией организации AIM, устанавливающей интерпретации в расширенном канале (ECI), которая определяет предварительную обработку этого типа данных, и включается с помощью индикатора режима 0111.
________________
См. спецификацию [22].
Интерпретации в расширенном канале могут быть использованы только с устройствами считывания, позволяющими передавать идентификатор символики. Устройства считывания, которые не могут передавать идентификатор символики, не обеспечивают передачу данных из любого символа, содержащего ECI.
Входные данные ECI должны быть обработаны в системе кодирования как ряд байтовых значений.
Данные в последовательности ECI могут кодироваться в любом режиме или режимах, допускающих наиболее эффективное кодирование значений байта данных, независимо от их графического представления. Например, последовательность байтов со значениями в диапазоне от 30 до 39 может кодироваться в числовом режиме (см. 7.4.3), как если бы это была последовательность цифр от 0 до 9, даже при том, что это фактически может представлять нечисловые данные. Для определения значения индикатора числа знаков следует использовать несколько байтов (в режиме кандзи - пар байтов).