Wpisany przez Tomasz Lubiński,
29 sierpnia 2007 21:12
Kod UPC-E jest specjalną odmianą kodu UPC-A, który powstaje poprzez usunięcie zer występujących właśnie w kodzie UPC-A. Jest on stosowany tam, gdzie ze względu na niewielkie rozmiary produktu nie ma miejsca by wydrukować pełen kod UPC-A. Tylko pewien zakres kodów UPC-A może zostać przekonwertowany do kodu UPC-E. Kompresja ta polega na zmniejszeniu liczby cyfr potrzebnych do zapamiętania kodu producenta i produktu z 10 do 6. W tabeli poniżej zestawione są zakresy i sposób kompresji kodów UPC-A do kodu UPC-E. Oznaczenia: s - kod systemu, dopuszczalne tylko 0 oraz 1, a - kod producenta, b - kod produktu, c - suma kontrolna - nie jest obliczana ponownie - używa się sumy kontrolnej z kodu UPC-A.
By dokonać konwersji z kodu UPC-A do kodu UPC-E należy sprawdzać kolejno według podanej tabeli czy położenie zer i ewentualnej cyfry pokrywa się z kodem do konwersji. Jeżeli znajdziemy taki wpis to dokonujemy transformacji do kodu UPC-E zgodnie z tabelką powyżej. Jeżeli nie to podany kod UPC-A nie może zostać przekonwertowany do kodu UPC-E.
W przypadku gdy podany kod UPC-E chcemy przekonwertować z powrotem do kodu UPC-A wówczas sprawdzamy przedostatnią cyfrę w kodzie i dokonujemy konwersji zgodnie z tabelką powyżej. Jeżeli przedostatnią cyfrą jest 3 to wówczas musimy sprawdzić jeszcze dodatkowo czwartą cyfrę od początku - jeżeli jest to 0, 1 lub 2 to nie jest to prawidłowy kod UPC-E, w przeciwnym razie dokonujemy transformacji zgodnie z tabelką powyżej.
Cyfra kontrolna kodu UPC-E jest automatycznie przepisywana z kodu UPC-A, zatem by sprawdzić jej poprawność a co za tym idzie poprawność całego kodu należy przekonwertować kod z UPC-E do kodu UPC-A i na nim sprawdzić poprawność cyfry kontrolnej.
By kod UPC-E mógł zostać autmatycznie przeczytany przez urządzenia skanujące musi zostać przetworzony do kodu kreskowego UPC-E
Kod UPC-A | Kod UPC-E | Przykład UPC-A <=> UPC-E |
saa00000pppc | saappp0c | 123000004561 <=> 12345601 |
saa10000pppc | saappp1c | 012100007896 <=> 01278916 |
saa20000pppc | saappp2c | 012200007895 <=> 01278925 |
saa300000ppc | saa3pp3c | 123300000898 <=> 12338938 |
saa400000ppc | saa4pp3c | 123400000897 <=> 12348937 |
saa500000ppc | saa5pp3c | 123500000896 <=> 12358936 |
saa600000ppc | saa6pp3c | 098600000452 <=> 09864532 |
saa700000ppc | saa7pp3c | 098700000451 <=> 09874531 |
saa800000ppc | saa8pp3c | 098800000320 <=> 09883230 |
saa900000ppc | saa9pp3c | 041900000257 <=> 04192537 |
saaaa00000pc | saaaap4c | 123450000083 <=> 12345843 |
saaaaa00005c | saaaaa5c | 123456000056 <=> 12345656 |
saaaaa00006c | saaaaa6c | 123456000063 <=> 12345663 |
saaaaa00007c | saaaaa7c | 123456000070 <=> 12345670 |
saaaaa00008c | saaaaa8c | 123456000087 <=> 12345687 |
saaaaa00009c | saaaaa9c | 123456000094 <=> 12345694 |
By dokonać konwersji z kodu UPC-A do kodu UPC-E należy sprawdzać kolejno według podanej tabeli czy położenie zer i ewentualnej cyfry pokrywa się z kodem do konwersji. Jeżeli znajdziemy taki wpis to dokonujemy transformacji do kodu UPC-E zgodnie z tabelką powyżej. Jeżeli nie to podany kod UPC-A nie może zostać przekonwertowany do kodu UPC-E.
W przypadku gdy podany kod UPC-E chcemy przekonwertować z powrotem do kodu UPC-A wówczas sprawdzamy przedostatnią cyfrę w kodzie i dokonujemy konwersji zgodnie z tabelką powyżej. Jeżeli przedostatnią cyfrą jest 3 to wówczas musimy sprawdzić jeszcze dodatkowo czwartą cyfrę od początku - jeżeli jest to 0, 1 lub 2 to nie jest to prawidłowy kod UPC-E, w przeciwnym razie dokonujemy transformacji zgodnie z tabelką powyżej.
Cyfra kontrolna kodu UPC-E jest automatycznie przepisywana z kodu UPC-A, zatem by sprawdzić jej poprawność a co za tym idzie poprawność całego kodu należy przekonwertować kod z UPC-E do kodu UPC-A i na nim sprawdzić poprawność cyfry kontrolnej.
By kod UPC-E mógł zostać autmatycznie przeczytany przez urządzenia skanujące musi zostać przetworzony do kodu kreskowego UPC-E
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Tomasz Lubiński | C/C++ | .cpp | .cpp | ***** / 1 | |
Tomasz Lubiński | Delphi/Pascal | .pas | .pas | ***** / 1 | |
Tomasz Lubiński | Java | .java | .java | ***** / 1 |
Poprawiony: 29 sierpnia 2012 20:24