EAN 8: Как вычислить контрольную сумму? - PullRequest
11 голосов
/ 16 июля 2009

Мне нужно создать штрих-код EAN 8 программно. Я ищу алгоритм для вычисления контрольной суммы цифры.

Ответы [ 13 ]

0 голосов
/ 26 сентября 2016

Работает на EAN 13 и EAN8 :

public static String generateEAN(String barcode) {
    int first = 0;
    int second = 0;

    if(barcode.length() == 7 || barcode.length() == 12) {

        for (int counter = 0; counter < barcode.length() - 1; counter++) {
            first = (first + Integer.valueOf(barcode.substring(counter, counter + 1)));
            counter++;
            second = (second + Integer.valueOf(barcode.substring(counter, counter + 1)));
        }
        second = second * 3;
        int total = second + first;
        int roundedNum = Math.round((total + 9) / 10 * 10);

        barcode = barcode + String.valueOf(roundedNum - total);
    }
    return barcode;
}
0 голосов
/ 18 ноября 2015

Расчет контрольных цифр Python EAN13 на основе Java-функции Наджу Махи:

def generateEAN13CheckDigit(self, first12digits):
    charList = [char for char in first12digits]
    ean13 = [1,3]
    total = 0
    for order, char in enumerate(charList):
        total += int(char) * ean13[order % 2]

    checkDigit = 10 - total % 10
    if (checkDigit == 10):
        return 0
    return checkDigit
0 голосов
/ 02 июля 2015

Java версия:

Отлично работает

public static int checkSum(String code){
        int val=0;
        for(int i=0; i<code.length()-1; i++){
            val+=((int)Integer.parseInt(code.charAt(i)+""))*((i%2==0)?1:3);
        }

        int checksum_digit = (10 - (val % 10)) % 10;

        return checksum_digit;
    }
...