2013年7月9日火曜日

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

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

private static char[] modulus43CharList =
{
    '0','1','2','3','4','5','6','7','8','9',
    'A','B','C','D','E','F','G','H','I','J',
    'K','L','M','N','O','P','Q','R','S','T',
    'U','V','W','X','Y','Z','-','.',' ','$',
    '/','+','%'
};

/// 
/// モジュラス43 計算
/// CODE39
/// 
public static string GetModulus43(string Value)
{
    if (!Regex.IsMatch(Value, @"^[A-Z|0-9|\-|.| |$|/|+|%]+$"))
    {
        throw new FormatException();
    }

    long x = 0;
    for (int i = 0; i < Value.Length; i++)
    {
        x += Array.IndexOf(modulus43CharList, Value[i]);
    }

    return modulus43CharList[x % 43].ToString();
}

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

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

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

Modulus10W3コード
/// 
/// モジュラス10/ウェイト3 計算
/// JAN8 JAN13 ISBN13 ITF NW-7
/// 
public static string GetModulus10Weight3(string Value)
{
    if (!Regex.IsMatch(Value, @"^[0-9]+$"))
    {
        throw new FormatException();
    }

    int x = 0;
    for (int i = 0; i < Value.Length; i++)
    {
        x += int.Parse(Value[Value.Length - 1 - i].ToString()) * ((i % 2 == 0) ? 3 : 1);
    }

    x = (10 - (x % 10)) % 10;

    return x.ToString();
}


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

2013年7月2日火曜日

と思ったんですが

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

名前とかデザインを修正