Жуки в полоску Rossomahaar Хакер, номер #084, стр. 084-056-2 [код EAN-13] Этот код представляет для нас наибольший интерес, так как используется повсеместно в сфере розничной торговли. С его изучения лучше всего начинать знакомство с линейными штрих-кодами. На рисунке изображен пример кода EAN-13, посмотрим, из чего он состоит. А состоит он из тридцати двух черных полосок различной ширины, кодирующих тринадцать цифр и, собственно, надписи из этих самых цифр. Первые 2-3 цифры кода означают принадлежность к различным региональным отделениям EAN или принадлежность к печатной продукции. По ним можно определить, в какой стране изготовлен товар, помеченный этим штрих-кодом (для этого задействуй, к примеру, прогу EAN-13 CountryFinder). Далее 4-5 цифр означают код присвоенный изготовителю товара. Это по стандартам EAN, на деле многие страны, в том числе Россия присваивают производителям 7 цифр. Оставшиеся цифры присваиваются различным товарам данного производителя. Последняя цифра - контрольная, служит для проверки корректности считанного кода. Алгоритм вычисления контрольной цифры весьма прост: 1. Сложить цифры, стоящие на четных местах: 7+1+0+1+1+0=10 2. Полученную сумму умножить на 3: 10*3=30 3. Сложить цифры, стоящие на нечетных местах, без контрольной цифры: 9+7+6+9+0+0=31 4. Сложить числа, указанные в пунктах 2 и 3: 30+31=61 5. Возьмем остаток от деления на 10: 31%10=1 6. Из 10 вычесть полученное в пункте 5: 10-1=9 - контрольная цифра. Как видишь, наш штрих-код правильный. Несовпадение контрольной цифры на штрихкоде товара, скорее всего, означает, что товар поддельный. Теперь обратим внимание на графическую часть штрих-кода. По краям и посередине кода находятся пары тонких черных полос, выделяющихся вниз, разделяя надпись из цифр. Они не содержат в себе никакой информации, а нужны для того, чтобы сканер мог подстроиться под размеры изображенного кода и четко определить его границы. Таким образом, весь штрих-код как бы разделен на две равные части. Каждая цифра, кроме самой первой, кодируется и в графическом виде представляется двумя черными полосками. Первая цифра не кодируется, а определяется в зависимости от того, какие кодировки используют следующие за ней шесть цифр. Код EAN-13 использует три вида кодировок: code A, code B, code C. Двоичный код code C получается в результате проведения операции логического отрицания code A, то есть NOT code A, а code B - это «обратный» code C. В двоичной системе цифры этих кодировок выглядят следующим образом: Code A Code B Code 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 Несложно догадаться, что единицы будут графически выглядеть на штрих-коде как закрашенные области кода, нули - как не закрашенные. Разделительные полосы по краям кода можно обозначить как 101, а посередине - как 01010. Правая часть кода (последние шесть цифр) EAN-13 всегда кодируется как code C. Цифры левой части кода могут кодироваться методами A и B в зависимости от первой цифры штрих-кода. Зависимость эту можно представить следующим образом: |