algorytm.org

Implementacja w Java



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-2 - Implementacja w Java
Ocena użytkownikóww: *****  / 2
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 27 grudnia 2005 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

BarCode.java:
/**
 * @author Tomasz Lubinski
 * (c)2005 algorytm.org
 *
 *  EAN2 Bar Code
 */
public class BarCode {

	private static final byte parityTable[][] = {
	        {0, 0, 0, 0, 0, 0},
	        {0, 0, 1, 0, 1, 1},
	        {0, 0, 1, 1, 0, 1},
	        {0, 0, 1, 1, 1, 0},
	        {0, 1, 0, 0, 1, 1},
	        {0, 1, 1, 0, 0, 1},
	        {0, 1, 1, 1, 0, 0},
	        {0, 1, 0, 1, 0, 1},
	        {0, 1, 0, 1, 1, 0},
	        {0, 1, 1, 0, 1, 0}
	        };

	private static final byte right[][] = {
	        {1, 1, 1, 0, 0, 1, 0},
	        {1, 1, 0, 0, 1, 1, 0},
	        {1, 1, 0, 1, 1, 0, 0},
	        {1, 0, 0, 0, 0, 1, 0},
	        {1, 0, 1, 1, 1, 0, 0},
	        {1, 0, 0, 1, 1, 1, 0},
	        {1, 0, 1, 0, 0, 0, 0},
	        {1, 0, 0, 0, 1, 0, 0},
	        {1, 0, 0, 1, 0, 0, 0},
	        {1, 1, 1, 0, 1, 0, 0}
	        };

	private static final byte left[][][] = {
            {
                    {0, 0, 0, 1, 1, 0, 1},
                    {0, 0, 1, 1, 0, 0, 1},
                    {0, 0, 1, 0, 0, 1, 1},
                    {0, 1, 1, 1, 1, 0, 1},
                    {0, 1, 0, 0, 0, 1, 1},
                    {0, 1, 1, 0, 0, 0, 1},
                    {0, 1, 0, 1, 1, 1, 1},
                    {0, 1, 1, 1, 0, 1, 1},
                    {0, 1, 1, 0, 1, 1, 1},
                    {0, 0, 0, 1, 0, 1, 1}
            },
            {
                    {0, 1, 0, 0, 1, 1, 1},
                    {0, 1, 1, 0, 0, 1, 1},
                    {0, 0, 1, 1, 0, 1, 1},
                    {0, 1, 0, 0, 0, 0, 1},
                    {0, 0, 1, 1, 1, 0, 1},
                    {0, 1, 1, 1, 0, 0 ,1},
                    {0, 0, 0, 0, 1, 0, 1},
                    {0, 0, 1, 0, 0, 0 ,1},
                    {0, 0, 0, 1, 0, 0, 1},
                    {0, 0, 1, 0, 1, 1, 1}
            }
    };
	
	private static final byte checksumTable[][] = {
	        {0, 0},
	        {0, 1},
	        {1, 0},
	        {1, 1}
	        };
	
	public byte[] convert(byte EAN2[]) {
		
		/* inccorect length or check sum, return null */
		if ((EAN2 == null) ||
			(EAN2.length != 2)) {
			return null;
		}
		
		byte bars[] = new byte[20];
        for (int i=0; i<20; i++) {
            bars[i] = 0;
        }

        int addCheckSum = EAN2[0]*10 + EAN2[1];
        addCheckSum %= 4;

        bars[0] = 1;
        bars[1] = 0;
    	bars[2] = 1;
    	bars[3] = 1;

    	for (int i=0; i<2; i++) {
            for (int j=0; j<7; j++) {
                    bars[i*9 + 4 + j] = left[checksumTable[addCheckSum][i]][EAN2[i]][j];
            }
            if (i<1) {
                    bars[i*9 + 11] = 0;
                    bars[i*9 + 12] = 1;
            }
    	}
    	
		return bars;
	}
}
Dodaj komentarz