EAN 8: Как вычислить цифру контрольной суммы?

Кого Вы пытаетесь убедить? Инженеры или менеджер? При попытке убедить своих коллег инженера, что я думаю, что Ваш лучший выбор состоит в том, чтобы обратиться к их требованию сделать высококачественную часть программного обеспечения. Существуют многочисленные исследования, которые показывают, что это находит ошибки, и если они заботятся о выполнении хорошего задания, которое должно быть достаточно для них.

, При попытке убедить управление, необходимо будет, скорее всего, сделать некоторое обоснование стоимости/преимущества, говоря, что стоимость дефектов, которые будут не обнаружены, больше, чем стоимость записи тестов. Обязательно включайте intagable затраты также, такие как потеря потребительского доверия, и т.д.

11
задан stukelly 31 July 2009 в 21:22
поделиться

2 ответа

int checkSum(const std::vector<int>& code) const
{
    if (code.size() < 8) return false;

    for( SIZE_T i = 0; i< code.size(); i++ )
    {
        if( code[i] < 0 ) return false;
    }

    int sum1 = code[1] + code[3] + code[5] 
    int sum2 = 3 * (code[0] + code[2] + code[4] + code[6]);

    int checksum_value = sum1 + sum2;
    int checksum_digit = 10 - (checksum_value % 10);
    if (checksum_digit == 10) checksum_digit = 0;

    return checksum_digit;
}
8
ответ дан 3 December 2019 в 01:45
поделиться

Алгоритм описан в этой статье википедии о EAN , обратите внимание, что EAN-8 вычисляется так же, как EAN-13.

Вот рабочий пример из http://www.barcodeisland.com/ean8.phtml :

Предполагая, что мы хотим закодировать 7-значное сообщение «5512345», мы бы вычислили контрольную сумму следующим образом:

Barcode          5     5     1     2     3     4     5
Odd/Even Pos?    O     E     O     E     O     E     O
Weighting        3     1     3     1     3     1     3
Calculation    5*3   5*1   1*3   2*1   3*3   4*1   5*3
Weighted Sum    15     5     3     2     9     4    15

Итого 15 + 5 + 3 + 2 + 9 + 4 + 15 = 53. 7 необходимо добавить к 53, чтобы получить число, делимое на 10, таким образом, контрольная сумма равна 7, а завершенное значение штрих-кода - «55123457. ".

string code="55123457";

int sum1 = code[1] + code[3] + code[5] 
int sum2 = 3 * (code[0] + code[2] + code[4] + code[6]);
int checksum_value = sum1 + sum2;

int checksum_digit = 10 - (checksum_value % 10);
if (checksum_digit == 10) 
    checksum_digit = 0;
13
ответ дан 3 December 2019 в 01:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: