Таблица 12 — Схема алфавитно-цифрового кодирования
Знаки |
Десятичные значения знаков ASCII |
Закодированное значение |
Закодированные двоичные данные |
0 — 9 |
48 — 57 |
Десятичное значение ASCII минус 43 (5 битов) |
От 00101 до 01110 |
Знак FNCI/указатель фиксации схемы числового кодирования |
|
15 (5 битов) |
01111 |
A —Z |
65 — 90 |
Десятичное значение ASCII минус 33 (6 битов) |
От 100000 до 111001 |
* (ЗВЕЗДОЧКА) |
42 |
58 (6 битов) |
111010 |
, (ЗАПЯТАЯ) |
44 |
59 (6 битов) |
111011 |
- (МИНУС или дефис) |
45 |
60 (6 битов) |
111100 |
. (ТОЧКА в конце предложения или ТОЧКА как разделитель разрядов в десятичном числе1> ) |
46 |
61 (6 битов) |
111101 |
/(ДРОБНАЯ ЧЕРТА) |
47 |
62 (6 битов) |
111110 |
Схема числового кодирования |
|
0 (3 бита) |
000 |
Указатель фиксации схемы кодирования знаков по ISO/IEC 646 |
|
4 (5 битов) |
00100 |
1)Знак «ТОЧКА» используют в международных стандартах как разделитель разрядов в десятичном числе (в Российской Федерации для этих целей используют знак «ЗАПЯТАЯ»),
Данные кодируют путем добавления двоичныхданных переменной длины каждого знака в поле универсального уплотнения данных со следующими исключениями:
если следующим знаком данных является знак FNC1, его кодируют по схеме алфавитно-цифрового кодирования;
если следующий знак данных может быть закодирован только с помощью схемы кодирования знаков по ISO/IEC 646, то в поле уплотнения данных кодируют указатель фиксации схемы кодирования знаков по ISO/IEC 646;
если следующие шесть знаков данных могут быть закодированы с помощью схемы числового кодирования, то в поле уплотнения данных кодируют указатель фиксации схемы числового кодирования;
если следующие четыре или более знаков данных могут быть закодированы с помощью схемы числового кодирования и они замыкают строку данных, то в поле уплотнения данных кодируют указатель фиксации схемы числового кодирования.
Каждый раз, когда кодируют указатель фиксации, схема кодирования изменяется в соответствии с этим указателем.
При декодировании кодированного двоичного поля сначала в поле проверяют первый (или три первых) бита, следующий(ие) за ранее декодированным знаком или расположенный(ые) в начале поля:
если первый бит равен «1», следующий знак должен быть декодирован как 6-битовый знак;
если первые три бита равны «ООО», то это указатель фиксации;
в остальных случаях следующий знак декодируют как 5-битовый знак.
7.2.5.5.3 Схема кодирования знаков по ISO/IEC 646
При этом способе кодируют цифры, прописные и строчные буквы, а также 21 специальный графический знак по ISO/IEC 646, знак FNC1 и два знака указателя фиксации, требуемые символикой. Двоичный кодированный поток не имеет фиксированного числа битов для одного знака. Биты присваивают в соответствии с длиной (в битах) каждого кодируемого знака. Для кодирования каждого знака необходимо от трех до восьми битов (таблица 13).
Таблица 13 — Схема кодирования знаков по ISO/IEC 846
Знаки |
Десятичные значения знаков ASCII |
Кодируемое значение |
Закодированные двоичные данные |
0 — 9 |
48 — 57 |
Десятичное значение ASCII минус 43 (5 битов) |
От 00101 до 01110 |
FNCI/указатель фиксации схемы числового кодирования |
|
15 (5 битов) |
01111 |
A-Z |
65 — 90 |
Десятичное значение ASCII минус 1 (7 битов) |
От 1000000 до 1011001 |
a-z |
97 — 122 |
Десятичное значение ASCII минус 7 (7 битов) |
От 1011010 до 1110011 |
! (ВОСКЛИЦАТЕЛЬНЫЙ ЗНАК) |
33 |
232 (8 битов) |
11101000 |
"(КАВЫЧКА) |
34 |
233 (8 битов) |
11101001 |
% (ПРОЦЕНТЫ) |
37 |
234 (8 битов) |
11101010 |
& (КОММЕРЧЕСКОЕ И) |
38 |
235 (8 битов) |
11101011 |
' (АПОСТРОФ) |
39 |
236 (8 битов) |
11101100 |
((СКОБКА ЛЕВАЯ) |
40 |
237 (8 битов) |
11101101 |
) (СКОБКА ПРАВАЯ) |
41 |
238 (8 битов) |
11101110 |
* (ЗВЕЗДОЧКА) |
42 |
239 (8 битов) |
11101111 |
+ (ПЛЮС) |
43 |
240 (8 битов) |
11110000 |
, (ЗАПЯТАЯ) |
44 |
241 (8 битов) |
11110001 |
Окончание таблицы 13
Знаки |
Десятичные значения знаков ASCII |
Кодируемое значение |
Закодированные двоичные данные |
- (МИНУС или ДЕФИС) |
45 |
242 (8 битов) |
11110010 |
. (ТОЧКА в конце предложения или ТОЧКА13)) |
46 |
243 (8 битов) |
11110011 |
/(ДРОБНАЯ ЧЕРТА) |
47 |
244 (8 битов) |
11110100 |
: (ДВОЕТОЧИЕ) |
58 |
245 (8 битов) |
11110101 |
; (ТОЧКА С ЗАПЯТОЙ) |
59 |
246 (8 битов) |
11110110 |
< (МЕНЬШЕ) |
60 |
247 (8 битов) |
11110111 |
= (РАВНО) |
61 |
248 (8 битов) |
11111000 |
> (БОЛЬШЕ) |
62 |
249 (8 битов) |
11111001 |
? (ВОПРОСИТЕЛЬНЫЙ ЗНАК) |
63 |
250 (8 битов) |
11111010 |
_ (ПОДЧЕРКИВАНИЕ) |
95 |
251 (8 битов) |
11111011 |
ПРОБЕЛ |
32 |
252 (8 битов) |
11111100 |
Указатель фиксации схемы числового кодирования |
|
0 (3 бита) |
000 |
Указатель фиксации схемы алфавитно-цифрового кодирования |
|
4 (5 битов) |
00100 |
Данные кодируют путем добавления к каждому знаку в поле универсального уплотнения данных двоичных данных переменной длины со следующими исключениями:
если следующим знаком является знак FNC1, его кодируют согласно схеме кодирования знаков по ISO/IEC 646;
если следующие четыре знака могут быть закодированы по схеме числового кодирования и в последующих десяти знаках отсутствует знак, который может быть закодирован только с помощью схемы кодирования знаков по ISO/IEC 646, то в поле универсального уплотнения данных кодируют указатель фиксации схемы числового кодирования;
если следующие пять знаков могут быть закодированы по схеме алфавитно-цифрового кодирования и в последующих десяти знаках отсутствует знак, который может быть закодирован только с помощью схемы кодирования знаков по ISO/IEC 646, то в поле универсального уплотнения данных кодируют указатель фиксации схемы алфавитно-цифрового кодирования.
Единственным исключением является случай, когда число завершающих знаков данных менее 10. В этом случае проверку 10 знаков досрочно завершают с окончанием данных. Если кодируют указатель фиксации, то схема кодирования соответствующим образом изменяется.
При декодировании кодированного двоичного поля сначала производят проверку первых трех или пяти битов, следующих за ранее декодированным знаком или расположенных в начале поля:
если первые три бита равны «ООО», это соответствует указателю фиксации схемы числового кодирования;
в противном случае берут десятичное значение первых пяти битов. Если это значение:
равно 15 или менее, то следующий знак декодируют как 5-битовый знак;
находится в диапазоне от 16 до 28, то следующий знак декодируют как 7-битовый знак;
равно 29 или более, то следующий знак декодируют как 8-битовый знак.
7.2.5.5.4 Биты-заполнители для поля универсального уплотнения данных
Число знаков символа в символе должно быть наименьшим необходимым числом для кодирования данных в этом символе. Тем не менее после кодирования данных в поле уплотнения данных в символе может возникнуть недостаток битов. Указанный недостаток должен быть восполнен последовательностью битов-заполнителей для достижения полной информационной емкости символа.
Строку битов-заполнителей создают путем повтора 5-битовых последовательностей “00100”, которые одновременно являются указателем фиксации схемы кодирования знаков по ISO/IEC 646 в схеме алфавитно-цифрового кодирования и указателем фиксации схемы алфавитно-цифрового кодирования в схеме кодирования знаков по ISO/IEC 646, так что способы кодирования и их указатели фиксации чередуются без кодирования дополнительных данных. Последняя дополнительная последовательность может быть усечена справа, если в символе недостаточно битов.
Если схема числового кодирования завершает кодирование данных, перед чередующейся последовательностью битов-заполнителей “00100” требуется 4-битовый указатель фиксации алфавитно-цифрового кодирования “0000”. Например, если кодирование завершается в схеме числового кодирования и остается семь битов, они должны быть закодированы как “0000001 ”, что является указателем фиксации схемы алфавитно-цифрового кодирования “0000”, за которым следуют первые три бита указателя фиксации “001 ” схемы кодирования знаков по ISO/IEC 646 “00100”. Первый 4-битовый указатель фиксации может быть сокращен, если для заполнения требуется менее четырех битов.
Контрольный знак символа
Первым знаком символа GS1 DataBar Расширенный является контрольный знак символа. В нем закодирована информация о длине символа и контрольной сумме взвешенных значений ширины элементов знаков символа для данных (далее — знаки символа). Используют только первые 4009 значений (от Одо 4008) контрольного знака символа.
Число знаков символа S (в диапазоне от 4 до 22) и значение контрольной суммы кодируют в контрольном знаке следующим образом:
Значение контрольного знака = 211 х (S-4) + значение контрольной суммы.
Значение контрольной суммы равно остатку от деления по модулю 211 взвешенной суммы значений ширины элементов в знаке символа. Весовые коэффициенты, приведенные в таблице 14, вычисляют как степенную функцию с аргументом 3 по модулю 211, начиная с первого элемента первого знака символа.
Таблица14 — Весовые коэффициенты элементов знаков символа для вычисления значения контрольной суммы по модулю 211
Расположение знака символа по отношению к шаблону поиска |
Весовой коэффициент знака символа для элемента с номером |
|||||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
Слева от А1* |
|
|
|
|
|
|
|
|
Справа от А1 |
1 |
3 |
9 |
27 |
81 |
32 |
96 |
77 |
Слева от А2 |
20 |
60 |
180 |
118 |
143 |
|
21 |
63 |
Справа от А2 |
189 |
145 |
13 |
39 |
117 |
140 |
209 |
205 |
Слева от В1 |
193 |
157 |
49 |
147 |
19 |
57 |
171 |
91 |
Справа от В1 |
62 |
186 |
136 |
197 |
169 |
85 |
44 |
132 |
Слева от В2 |
185 |
133 |
188 |
142 |
4 |
12 |
36 |
108 |
Справа от В2 |
113 |
128 |
173 |
97 |
80 |
29 |
87 |
50 |
Слева от С1 |
150 |
28 |
84 |
41 |
123 |
158 |
52 |
156 |
Справа от С1 |
46 |
138 |
203 |
187 |
139 |
206 |
196 |
166 |
Слева от С2 |
76 |
17 |
51 |
153 |
37 |
111 |
122 |
155 |
Справа от С2 |
43 |
129 |
176 |
106 |
107 |
110 |
119 |
146 |
Слева от D1 |
16 |
48 |
144 |
10 |
30 |
90 |
59 |
177 |
Справа от D1 |
109 |
116 |
137 |
200 |
178 |
112 |
125 |
164 |
Слева от D2 |
70 |
210 |
208 |
202 |
184 |
130 |
179 |
115 |
Справа от D2 |
134 |
191 |
151 |
31 |
93 |
68 |
204 |
190 |