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. }  

C#でモジュラス10/ウェイト3の計算

だいぶ前に書いたバーコード作成ソフトのコードを見直してます。
ソースもさらしていきます

JANコードなどで使うチェックディジットです

Modulus10W3コード
  1. /// <summary>  
  2. /// モジュラス10/ウェイト3 計算  
  3. /// JAN8 JAN13 ISBN13 ITF NW-7  
  4. /// </summary>  
  5. public static string GetModulus10Weight3(string Value)  
  6. {  
  7.     if (!Regex.IsMatch(Value, @"^[0-9]+$"))  
  8.     {  
  9.         throw new FormatException();  
  10.     }  
  11.   
  12.     int x = 0;  
  13.     for (int i = 0; i < Value.Length; i++)  
  14.     {  
  15.         x += int.Parse(Value[Value.Length - 1 - i].ToString()) * ((i % 2 == 0) ? 3 : 1);  
  16.     }  
  17.   
  18.     x = (10 - (x % 10)) % 10;  
  19.   
  20.     return x.ToString();  
  21. }  


XMLコメントが入るとおかしくなるなあ
タグが消えたりしてしまう なんでだろう

2013年7月2日火曜日

と思ったんですが

無償のwordpress.comだとbloggerより制限が多いですね。
こっちにもどします。

名前とかデザインを修正