2011-08-10 20 views
-2

任何人都可以给我在C#中的代码...获取与Mod11的验证数字?在C#中获取校验位(Mod 11)的实现#

谢谢。

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

例子:

Mod11.AddCheckDigit("036532"); 

结果:0365327

+4

你有什么试过?这不是我们解决您的问题的网站。这是我们帮助您解决自己的问题的网站,并希望在此过程中提高您的理解力。说“给我代码”的问题很可能会从网站上被踢掉。 –

+0

哦,我不知道这个!我会删除它 – Fraga

+0

另外,你的例子特别糟糕,因为它使用八进制符号,并且校验数字在十进制数字上运行。或者你没有意识到'int'参数不保存格式,只有值? –

回答

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),否则会出现数字问题。