Алгоритм формирования штрих-кода EAN-8

Последнее изменение: 10/04/2018 11:45:57

Некоторое время назад, мне понадобилось написать одну систему, использующую штрих-коды для отслеживания оборудования. В силу ряда причин, после анализа доступных вариантов был выбран в качестве основного штрих-код стандарта EAN-8. Мне нужен был алгоритм формирования штрих-кода, чтобы я мог автоматически генерировать нужные изображения. Результаты изысканий и подробное описание работы алгоритма я и привожу ниже.

Немного общей информации

Система штрих-кодов используется для быстрого маркирования различных товаров или оборудования. Штрих-код может быть затем легко прочитан при помощи сканера штрих-кодов и автоматически преобразован в цифровой код. Системы делятся на линейные и двухмерные.

Штрих-код EAN-8

На данный момент существует несколько стандартных штрих-кодов, отличающихся форматом самого штрих-кода, а также количеством уникальных комбинаций. Самые распространенные системы штрих-кодирования:

Штрих-код EAN-8, который описывается далее, является одним из самых распространенных форматов штрих-кодирования с емкостью в 8 цифр и по структуре похоже на код EAN-13.

Алгоритм расчета и формирования

Штрих-код EAN-8 состоит из 8 цифр, первые 7 из которых являются значащими, а последняя цифра кодирует контрольную сумму и должна быть рассчитана на основе предыдущих 7 цифр. Ниже описан общий алгоритм формирования кода, найденный на этом сайте.

Расчет контрольной суммы

Числа нумеруются слева направо. Контрольная сумма рассчитывается по следующему алгоритму.

 x = сумма четных чисел
 y = сумма нечетных чисел
 
 z = x + 3 * y
 
 m - ближайшее большее к Z число, которое делится на 10
 
 CheckSum = m - z

Пример расчета контрольной суммы:

 Исходный 7-значный код: 3596710
 
 x = 5 + 6 + 1 = 12;
 y = 3 + 9 + 7 + 0 = 19;
 z = 12 + 3 * 19 = 69;
 m = 70
 CheckSum = 70 - 69 = 1
 
 EAN-8 -> 3596 7101

Формирование штрих-кода

При кодировании исходной цифровой последовательности, используются следующие соглашения:

Если обозначить вертикальную черту цифрой "1", а пробел цифрой "0", то:

Таблицы кодирования

Для преобразования исходных цифр в соответствующие им вертикальные линии для кодов EAN-13 и ЕАН-8, используется следующая таблица:

Digit Table A Table B Table C
0 0001101 0100111 1110010
1 0011001 0110011 1100110
2 0010011 0011011 1101100
3 0111101 0100001 1000010
4 0100011 0011101 1011100
5 0110001 0111001 1001110
6 0101111 0000101 1010000
7 0111011 0010001 1000100
8 0110111 0001001 1001000
9 0001011 0010111 1110100

При кодирования в EAN-8, для первых четырех цифр используется таблица A, а для вторых четырех цифр таблица C.

Полезные ссылки

Смотри также