在c#中获取校验位(Mod 11)实现

时间:2011-08-10 04:59:46

标签: c# algorithm check-digit

任何人都可以用C#代码给我代码来获取Mod11的验证数字吗?

感谢。

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

示例:

Mod11.AddCheckDigit("036532");

结果:0365327

1 个答案:

答案 0 :(得分: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.这不会起作用,所以如果校验位为10,那么X经常被用作校验位,如果校验位是11,那么0用作校验位。如果使用X,则必须将校验位的字段定义为字符(PIC X),否则将出现数字问题。