-3

Mod11 で検証桁を取得するための C# のコードを教えてもらえますか?

ありがとう。

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

例:

Mod11.AddCheckDigit("036532");

結果: 0365327

4

1 に答える 1

3

コードは次のとおりです。

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 のいずれかの 2 桁の数になります。これは機能しないため、チェック ディジットが 10 の場合、X がチェックとして頻繁に使用されます。チェックデジットが 11 の場合、0 がチェックデジットとして使用されます。X を使用する場合、チェック ディジットのフィールドを文字 (PIC X) として定義する必要があります。そうしないと、数値の問題が発生します。

于 2011-08-10T05:25:08.447 に答える