2011-08-10 50 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),否則會出現數字問題。