Czytelników zorientowanych w telekomunikacji i szczegółach technologicznych niektórych interfejsów komunikacyjnych czy w informatyce może zastanawiać, dlaczego nie próbowano przygotować kodu kreskowego, który odzwierciedlałby stosowane w technice kodowanie „2 z 5”, nadające się do reprezentacji cyfr systemu dziesiętnego, proste w użyciu, a także pozwalające na 100-procentowe wykrywanie błędów pojedynczych, potrójnych i pięciokrotnych oraz 40-procentowe wykrywanie błędów podwójnych i poczwórnych. W istocie, to popularne rozwiązanie znalazło zastosowanie w postaci kodu Code 25 czy po prostu kod „dwa z pięciu”, przy czym istnieją jego różne implementacje, w których jedynki i zera są różnie oznaczane.
2 z 5 (Industrial 2of5)
Znaczenie symboli kodu „2 z 5”, stosowanego powszechnie w technice, zostało przedstawione w tabeli 10. W skrócie: każda cyfra dziesiętna jest zapisywana na pięciu bitach, z czego dwa są jedynkami, a pozostałe to zera. Wartość cyfry zależy od pozycji jedynek, które to pozycje odpowiadają dodawanym do siebie wagom, zgodnie z tabelą 10. Jedynki mogą być kodowane jako czarne paski szerokie, a zera jako czarne paski wąskie (najczęściej 2-3-krotnie węższe niż szerokie).
Oczywiście, pomiędzy paskami czarnymi konieczne jest umieszczenie cienkich pasków białych, by te czarne się ze sobą nie zlewały. Tak wydrukowany kod nie zawiera znaków startu i kodu ani cyfry kontrolnej, więc jego odczyt, choć cechuje się dużą niezawodnością, musi być prowadzony zawsze w poprawnej orientacji – to klasyczna odmiana Code 25. Dlatego na potrzeby przemysłu opracowano modyfikację w postaci kodu Industrial 2 of 5, w którym:
- wprowadzono znak startu w postaci 110,
- wprowadzono znak stopu w postaci 101,
- wprowadzono opcjonalną cyfrę kontrolną, dodawaną na końcu kodu,
- wszystkie cyfry kodu zapisywane są w odwrotnej kolejności niż w typowym Code 25.
Tymczasem na potrzeby lotnictwa (zarządzanie towarami przesyłanymi drogą lotniczą) przygotowano odmianę IATA 2of5, która bazuje na Industrial 2 of 5 z następującymi wyjątkami:
- znak startu to 00,
- znak stopu to 10,
- kod ma zawsze 17 cyfr,
- cyfra kontrolna jest obowiązkowa.
Na tej samej zasadzie opracowano stosowane w poczcie kody POSTNET i PLANET z tym, że nie używa się w nich węższych i szerszych pasków, ale wyższe i niższe. W POSTNET wyższe to jedynki, a w PLANET jest odwrotnie. Wszystkie paski są umieszczone z przerwami obok siebie i wyrównane do dołu, przy czym paski wyższe są 2-krotnie dłuższe niż paski niższe.
Standardowo kod POSTNET służy do zapisu kodu pocztowego wraz z cyfrą kontrolną, podawanego w różnych formatach (amerykańskie rozszerzone kody pocztowe mają 9 cyfr). Kody POSTNET można znaleźć na starszych listach z USA. Kod PLANET był natomiast używany do logistyki na poczcie. Niedawno oba kody zostały wyparte przez bardziej zaawansowany kod Intelligent Mail Barcode.
Ciekawostką jest kod Inverted 2of5, który jest tworzony tak samo jak klasyczny Code 25, z tą różnicą, że kolory pasków są odwrócone.
Wnikliwi czytelnicy mogą zauważyć, że w przypadku kodów kreskowych w pewnym sensie dostępnych jest nieco więcej możliwości kodowania znaków niż w technice cyfrowej, gdyż zarówno czarne, jak i białe paski mogą być szerokie lub wąskie. Oznacza to, że przerwy pomiędzy bitami kodu 2 z 5 również mogą coś reprezentować, co pozwoliłoby gęściej upakować dane, praktycznie bez strat w pewności odczytu. Idąc tym tropem, stworzono trzy dodatkowe kody bazujące na 2 z 5.
Dwa bardzo podobne do siebie to Matrix 2of5 i COOP 2of5. Bazują one na odwrotnych systemach wag, ale korzystają z tego samego założenia: każda cyfra jest kodowana za pomocą dwóch długie elementów i trzech krótkich, przy czym długie lub krótkie mogą być zarówno czarne paski, jak i przerwy pomiędzy nimi. Wiadomo tylko, że każda cyfra zaczyna się od czarnego paska i czarnym kończy, a więc składa się z trzech czarnych pasków i dwóch przerw.