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

C# 获取校验位(Mod 11)在c中的实现#,c#,algorithm,check-digit,C#,Algorithm,Check Digit,谁能给我C语言的代码。。。用于使用Mod11获取验证数字 谢谢 public class Mod11 { public static string AddCheckDigit(string number); } 例如: Mod11.AddCheckDigit("036532"); 结果:0365327代码如下: public class Mod11 { public static string AddCheckDigit(string number) {

谁能给我C语言的代码。。。用于使用Mod11获取验证数字

谢谢

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的两位数。这不起作用,因此,如果校验位为10,则经常使用X作为校验位,如果校验位为11,则使用0作为校验位。如果使用X,则校验位字段必须定义为字符(PIC X),否则将出现数字问题。

您尝试了什么?这不是我们解决您问题的网站。这是一个网站,我们可以帮助您解决自己的问题,并希望在此过程中提高您的理解。说“给我代码”的问题很可能会被网站踢掉。哦,我不知道!。。我将删除它,所以,您的示例特别差,因为它使用八进制表示法,并且校验数字对十进制数字进行运算。或者您没有意识到,
int
参数不保留格式,只保留值吗?我建议从算法规范开始,看看是否可以将其转换为代码:。干杯:)@Fraga:如果你能在下面提供你自己的答案,那就可以提问了。