[personal profile] ammo1
Сегодня я совершенно случайно обнаружил, что подавляющее большинство описаний подсчёта контрольной суммы самого обычного штрихкода EAN-13, которые можно найти в интернете, ошибочны.




В базе lamptest.ru есть штрихкоды ламп, которые я ввожу в экселевскую таблицу вручную. Конечно же при ручном вводе возможны ошибки, поэтому я попросил Матвея Иванова, сделавшего подсчёта итоговой оценки ламп в Excel, создать функцию, которая будет проверять правильность штрихкодов по их контрольной сумме.

Как известно, первые 12 цифр штрихкода кодируют информацию о товаре, а тринадцатая цифра - контрольная сумма.

Если набрать в поисковике "контрольная сумма штрихкода" в паре десятков первых ссылок будет одинаковый алгоритм:

1. Сложить цифры, стоящие на четных местах и полученную сумму умножить на три;
2. Сложить цифры, стоящие на нечетных местах (кроме самой контрольной цифры);
3. Сложить полученные числа;
4. Отбросить десятки;
5. Из числа 10 вычесть полученное число.

Оказалось, что этот алгоритм подходит не для всех штрихкодов. Если взять штрихкод 4607044243460, который я привёл на заглавной картинке, получается какая-то ерунда:

1. 6+7+4+2+3+6=28 x3 = 84
2. 4+0+0+4+4+4 = 16
3. 84+16 = 100
4. Как отбрасывать десятки у числа 100? Ну ладно, отбросим десять десятков, будет 0.
5. 10-0=10. Получилось 10, а должна быть одна цифра.

Удивительно, но этот неправильный алгоритм повторяется на тысячах сайтов, включая вполне официальные, вроде сайта о техническом регламенте продукции http://www.tehreg.ru/scode_kontr.htm.

Более корректный алгоритм было найти не так-то просто, но я его всё же нашёл: http://life-prog.ru/2_77338_raschet-kontrolnogo-chisla-koda-EAN--.html.

Первые три строки правильного алгоритма совпадают с неправильным:

1. Сложить цифры, стоящие на четных местах и полученную сумму умножить на три;
2. Сложить цифры, стоящие на нечетных местах (кроме самой контрольной цифры);
3. Сложить полученные числа;
4. Контрольным числом будет то, которое необходимо добавить к получившейся сумме, чтобы получить число, делящееся без остатка на 10.

В случае штрихкода, который я разбирал выше, сумма равна 100, значит контрольное число 0 (100 делится на 10 без остатка).


Заодно обнаружилось, что у IKEA штрихкоды 13-значные, но они не соответствуют EAN-13 и как у них считать контрольную сумму неизвестно. Вот, например штрихкод 3030597621633. Если бы это был EAN-13, на конце должна была бы быть семёрка, а там тройка.



Нигде в интернете алгоритм подсчёта икеевской контрольной суммы найти не удалось. Может быть вы знаете, как её считать?

А ещё я с удивлением для себя узнал, что большинство сканеров штрихкодов, использующихся в магазинах, просто эмулируют клавиатуру и при считывании кода передают последовательность нажатия цифровых клавиш, так что для сканера не нужны драйверы и специальные программы - просто тыкаешь в экселевскую ячейку, нажимаешь кнопку на сканере и получаешь в ячейке штрихкод. Заказал на Алиэкспрессе сканер за $12. Надеюсь, он окажется именно таким.


© 2017, Алексей Надёжин




Основная тема моего блога - техника в жизни человека. Я пишу обзоры, делюсь опытом, рассказываю о всяких интересных штуках. А ещё я делаю репортажи из интересных мест и рассказываю об интересных событиях.
Добавьте меня в друзья здесь. Запомните короткие адреса моего блога: Блог1.рф и Blog1rf.ru.

Второй мой проект - lamptest.ru. Я тестирую светодиодные лампы и помогаю разобраться, какие из них хорошие, а какие не очень.
From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

Profile

ammo1: (Default)
ammo1

February 2017

M T W T F S S
   1 2 3 4 5
6 7 8 9 10 11 12
13141516171819
20212223242526
2728     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 21 September 2017 21:14
Powered by Dreamwidth Studios