ГОСТ ISO/IEC 15438-2018. Межгосударственный стандарт. Информационные технологии. Технологии автоматической идентификации и сбора данных. Спецификация символики штрихового кода PDF417
Приложение N
(справочное)
АЛГОРИТМ МИНИМИЗАЦИИ ЧИСЛА КОДОВЫХ СЛОВ
Одни и те же данные могут быть представлены в виде различных последовательностей кодовых слов PDF417 использованием разных режимов уплотнения и процедур перехода. Не существует предписанной процедуры для минимизации числа требуемых кодовых слов, но для этих целей можно использовать следующий алгоритм:
a) принимают, что P указывает на начало потока данных;
b) устанавливают текущий режим кодирования в режим текстового уплотнения;
c) принимают, что N - число последовательных цифр, начинающихся от P;
d) если N >= 13, тогда:
1) фиксируют режим цифрового уплотнения;
2) кодируют N знаков с использованием цифрового уплотнения;
3) передвигают указатель P вперед на N знаков;
4) переходят к этапу c);
e) в противном случае, если N < 13, тогда:
1) принимают, что T - длина последовательности знаков в режиме текстового уплотнения, начинающейся с P. Последовательность заканчивается в том случае, если будут обнаружены либо знак, не находящийся в режиме текстового уплотнения, либо цифровая последовательность длиной 13 и более разрядов;
2) если T >= 5, тогда
i) фиксируют режим текстового уплотнения;
ii) кодируют T знаков с использованием режима текстового уплотнения;
iii) перемещают указатель P вперед на T знаков;
iv) переходят к этапу c);
3) если T < 5, тогда:
i) принимают, что B - длина кодируемой в двоичном виде последовательности, начинающейся с P. Последовательность заканчивают в случаях, если будут найдены либо последовательность в режиме текстового уплотнения, длиной 5 и более, либо цифровая последовательность, длиной 13 и более;
ii) если B = 1 и текущий режим текстового уплотнения, тогда;
I) переводят регистр в режим байтового уплотнения;
II) кодируют значение одного байта с использованием регистра режима байтового уплотнения;
III) перемещают вперед указатель P на B;
IV) переходят к этапу c);
iii) иначе
I) фиксируют режим байтового уплотнения;
II) кодируют B байтов с использованием режима байтового уплотнения;
III) перемещают вперед указатель P на B;
IV) переходят к этапу c).
