algorytm.org

EAN-5



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

EAN-5
Ocena użytkowników:***** / 1
SłabyŚwietny 
Wpisany przez Tomasz Lubiński, 27 grudnia 2005 19:11

Kod EAN-5, podobnie jak EAN-2 jest kodem uzupełniającym kod EAN-8, EAN-13, UPC-A bądź UPC-E. Nigdy nie występuje on sam a jedynie w parze z którymś ze wspomnianych. Dla książek w języku angielskim kod EAN-5 używany jest jako kod ceny. I tak początkowo pierwsza cyfra oznaczała walutę (patrz tabela poniżej), 4 kolejne cyfry oznaczały cenę pomnożoną razy 100. Wynika z tego że kod: 51234 oznaczał cenę: 12.34$. Kod o końcówce 9999 oznaczał cenę 99.99 lub większą.

pierwsza
cyfra
waluta
0GBP - funt brytyjski
1GBP - funt brytyjski
3$ - dolar australijski
4$ - dolar nowozelandzki
5$ - dolar amerykański
6$ - dolar kanadyjski
9zarezerwowane dla użytku wewnętrznego

Ze względu na rosnącą liczbę tytułów, których cena jest większa niż $100 w we wrzesniu 2004 roku postanowiono wprowadzić nowe reguły kodowania ceny poprzez EAN-5. Nowe reguły przedstawia tabela poniżej:
wartość EAN-5interpretacja
00000zarezerwowana
00001-09999GBP - funt brytyjski - znaczenie bez zmian
10000-19999US$100.00 - US$199.99
rozszerzony zakres dla dolara amerykańskiego
20000-29999US$200.00 - US$299.99
rozszerzony zakres dla dolara amerykańskiego
30000-39999US$300.00 - US$399.99
rozszerzony zakres dla dolara amerykańskiego
40000-49999US$400.00 - US$499.99
rozszerzony zakres dla dolara amerykańskiego
50000zarezerwowana
50001-59998US$0.01 - US$99.98
czyli zgodnie z poprzednią definicją
59999Cena nie jest zakodowana - oznacza cenę większą niż US$99.98
60000-89999zarezerwowana
90000oznacza, że cena nie jest kodowana
90001-99989zarezerwowane dla przemysłu
99990-99999zarezerwowane dla NACS (National Association of College Stores)

Kod kreskowy EAN-5 składa się z 47 białych i czarnych prążków opisujących dodatkowych pięć cyfr. Przyjmujemy, że 1 oznacza pasek ciemny, a 0 oznacza pasek jasny.EAN

    Kod kreskowy EAN-5 ma następującą strukturę:
  • lewe paski ochronne (ang. start sentinel) kodowane są jako: 1011
  • cyfra 1 kodowana jest lewostronnie
  • separator cyfr kodowany jako: 01
  • cyfra 2 kodowana jest lewostronnie
  • separator cyfr kodowany jako: 01
  • cyfra 3 kodowana jest lewostronnie
  • separator cyfr kodowany jako: 01
  • cyfra 4 kodowana jest lewostronnie
  • separator cyfr kodowany jako: 01
  • cyfra 5 kodowana jest lewostronnie

cyfrakodowanie lewostronnekodowanie
prawostronne*
nieparzysteparzyste
0000110101001111110010
1001100101100111100110
2001001100110111101100
3011110101000011000010
4010001100111011011100
5011000101110011001110
6010111100001011010000
7011101100100011000100
8011011100010011001000
9000101100101111110100
*kodowanie prawostronne nie jest używane dla kodu EAN-5


Czy w kodowaniu lewostronnym wybrać kodowanie parzyste czy nieparzyste decyduje suma kontrolna. Jest ona w ten sposób kodowana w sposób niejawny. Suma kontrolna kodu EAN-5 to suma cyfr nieparzystych pomnożona razy 3 plus suma liczb parzystych pomnożona razy 9 (zakładamy, że cyfry liczymy od 1), podzieloną przez modulo 10. Jaki sposób kodowania wybrać w zależności od wartości sumy kontrolnej rozpisane jest w tabeli poniżej (N - kodowanie nieparzyste, P - kodowanie parzyste).

Suma
kontrolna
Dodatkowa cyfra
12345
0PPNNN
1PNPNN
2PNNPN
3PNNNP
4NPPNN
5NNPPN
6NNNPP
7NPNPN
8NPNNP
9NNPNP


Przykład:

Zbudujemy teraz kod kreskowy dla kodu 72077
Suma kontrolna wynosi: 7*3+ 2*9 + 0*3 + 7*9 + 7*3 = 21 + 18 + 0 + 63 + 21 = 123.
123 mod 10 = 3
Z tabeli sposobu kodowania dodatkowych cyfr odczytujemy, że dla sumy kontrolnej równej 3, pierwszą cyfrę kodujemy parzyście, drugą, trzecią oraz czwartą nieparzyście a następnie piątą znów parzyście.
  • lewe paski ochronne (ang. start sentinel) kodowane są jako: 1011
  • 1 cyfra to 7, kodujemy ją lewostronnie parzyście: 0010001
  • separator cyfr: 01
  • 2 cyfra to 2, kodujemy ją lewostronnie nieparzyście: 0010011
  • separator cyfr: 01
  • 3 cyfra to 0, kodujemy ją lewostronnie nieparzyście: 0001101
  • separator cyfr: 01
  • 4 cyfra to 7, kodujemy ją lewostronnie nieparzyście: 0111011
  • separator cyfr: 01
  • 5 cyfra to 7, kodujemy ją lewostronnie parzyście: 0010001

Zatem gotowy kod kreskowy to:
10110010001010010011010001101010111011010010001
Co po zapisaniu w wersji graficznej wygląda następująco (obliczony kod EAN-5 uzupełniono poniżej kodem EAN-13, gdyż jak wspomniano już EAN-5 nigdy nie występuje sam, a jedynie jako uzupełnienie innych kodów):

EAN 13EAN 5

Przykład w JavaScript:

EAN5

Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiC#Microsoft Visual Studio 2010
.cs
.cs
***** / 0
Tomasz LubińskiC/C++Borland Builder 6
.cpp
.cpp
***** / 2
Tomasz LubińskiDelphi/PascalBorland Delphi 5
.pas
.pas
***** / 2
Tomasz LubińskiJava
.java
.java
***** / 2
Tomasz LubińskiJavaScriptFirefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera 9.5+, IE 9.0+
.js
.js
***** / 0
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie

Poprawiony: 28 sierpnia 2012 20:24
Dodaj komentarz