2013年7月9日火曜日

C#でモジュラス43の計算

バーコードのCode39で使うチェックディジットです

  1. private static char[] modulus43CharList =  
  2. {  
  3.     '0','1','2','3','4','5','6','7','8','9',  
  4.     'A','B','C','D','E','F','G','H','I','J',  
  5.     'K','L','M','N','O','P','Q','R','S','T',  
  6.     'U','V','W','X','Y','Z','-','.',' ','$',  
  7.     '/','+','%'  
  8. };  
  9.   
  10. /// <summary>  
  11. /// モジュラス43 計算  
  12. /// CODE39  
  13. /// </summary>  
  14. public static string GetModulus43(string Value)  
  15. {  
  16.     if (!Regex.IsMatch(Value, @"^[A-Z|0-9|\-|.| |$|/|+|%]+$"))  
  17.     {  
  18.         throw new FormatException();  
  19.     }  
  20.   
  21.     long x = 0;  
  22.     for (int i = 0; i < Value.Length; i++)  
  23.     {  
  24.         x += Array.IndexOf(modulus43CharList, Value[i]);  
  25.     }  
  26.   
  27.     return modulus43CharList[x % 43].ToString();  
  28. }  

0 件のコメント:

コメントを投稿