Получить контрольную цифру (Mod 11) реализации в C#

Может кто-нибудь дать мне код на C#... для получения контрольной цифры с Mod11?

Благодарю.

public class Mod11 
{
    public static string AddCheckDigit(string number); 
}

Пример:

Mod11.AddCheckDigit("036532");

Результат: 0365327

1 ответ

Код здесь:

public class Mod11
{
    public static string AddCheckDigit(string number)
    {
        int Sum = 0;
        for (int i = number.Length - 1, Multiplier = 2; i >= 0; i--)
        {
            Sum += (int)char.GetNumericValue(number[i]) * Multiplier;

            if (++Multiplier == 8) Multiplier = 2;
        }
        string Validator = (11 - (Sum % 11)).ToString();

        if (Validator == "11") Validator = "0";
        else if (Validator == "10") Validator = "X";

        return number + Validator;
    }
}

Я надеюсь, что это поможет кому-то.

ПРОБЛЕМЫ: Если остаток от деления равен 0 или 1, то вычитание даст двухзначное число либо 10, либо 11. Это не сработает, поэтому, если контрольная цифра равна 10, то X часто используется в качестве проверки цифра, и если контрольная цифра равна 11, тогда 0 используется в качестве контрольной цифры. Если используется X, то поле для контрольной цифры должно быть определено как символ (PIC X), иначе возникнет цифровая проблема.

Другие вопросы по тегам