Mod11 で検証桁を取得するための C# のコードを教えてもらえますか?
ありがとう。
public class Mod11
{
public static string AddCheckDigit(string number);
}
例:
Mod11.AddCheckDigit("036532");
結果: 0365327
Mod11 で検証桁を取得するための C# のコードを教えてもらえますか?
ありがとう。
public class Mod11
{
public static string AddCheckDigit(string number);
}
例:
Mod11.AddCheckDigit("036532");
結果: 0365327
コードは次のとおりです。
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) として定義する必要があります。そうしないと、数値の問題が発生します。