获得c#中的校验数字(Mod 11)实现

本文关键字:Mod 实现 数字 校验 获得 | 更新日期: 2023-09-27 18:05:08

谁能给我c#的代码…获取Mod11的验证数字?

谢谢。

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

的例子:

Mod11.AddCheckDigit("036532");

结果:0365327

获得c#中的校验数字(Mod 11)实现

代码如下:
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),否则将出现数字问题。