ブログが三日坊主になっていたので更新
モジュラス103もそのうち更新するよてえい
電子タバコおいしいれす(^q^)
2014年3月12日水曜日
C#で9DSRの計算
////// 9DSR 計算 /// NW-7 /// /// ///public static string Get9DSR(string Value) { bool result = Regex.IsMatch(Value, @"^[0-9]+$"); if (!result) { return null; } return (ulong.Parse(Value) % 9 == 0 ? 0 : 9 - (int.Parse(Value) % 9)).ToString(); }
C#でルーンズ(モジュラス10/ウェイト2)の計算
////// ルーンズ(モジュラス10/ウェイト2 計算 /// NW-7 /// /// ///public static string GetModulus10Weight2Runes(string Value) { bool result = Regex.IsMatch(Value, @"^[0-9]+$"); if (!result) { return null; } long checkDigit = 0; for (int i = 0; i < Value.Length; i++) { if (i % 2 == 0) { int x = int.Parse(Value.Substring(Value.Length - 1 - i, 1)) * 2; //10以上の場合、桁ごとに加算 if (10 <= x) x = 1 + (x % 10); checkDigit += x; } else { checkDigit += int.Parse(Value.Substring(Value.Length - 1 - i, 1)); } } checkDigit = 10 - (checkDigit % 10); checkDigit = checkDigit == 10 ? 0 : checkDigit; return checkDigit.ToString(); }
C#で加重モジュラス11の計算
////// 加重モジュラス11 計算 /// NW-7 /// /// ///public static string GetWeightedModulus11(string Value) { bool result = Regex.IsMatch(Value, @"^[0-9]+$"); if (!result || Value.Length > 12) { return null; } int[] weight1 = { 2, 6, 3, 5, 4, 8, 7, 10, 9, 5, 3, 6, }; int[] weight2 = { 9, 5, 8, 6, 7, 3, 4, 10, 2, 6, 8, 5, }; try { int checkDigit = 0; for (int i = 0; i < 2; i++) { checkDigit = 0; for (int j = 0; j < Value.Length; j++) { checkDigit += int.Parse(Value.Substring(Value.Length - 1 - j, 1)) * (i == 0 ? weight1[j] : weight2[j]); } checkDigit = checkDigit % 11; if (checkDigit == 0) return "0"; if (checkDigit != 1) break; } return (11 - checkDigit).ToString(); } catch { } return null; }
C#でモジュラス10/ウェイト2の計算
////// モジュラス10/ウェイト2 計算 /// NW-7 /// /// ///public static string GetModulus10Weight2(string Value) { bool result = Regex.IsMatch(Value, @"^[0-9]+$"); if (!result) { return null; } int checkDigit = 0; for (int i = 0; i < Value.Length; i++) { checkDigit += int.Parse(Value.Substring(Value.Length - 1 - i, 1)) * (i % 2 == 0 ? 2 : 1); } checkDigit = 10 - (checkDigit % 10); checkDigit = checkDigit == 10 ? 0 : checkDigit; return checkDigit.ToString(); }
C#でモジュラス11の計算
////// モジュラス11 計算 /// NW-7 /// /// ///public static string GetModulus11(string Value) { bool result = Regex.IsMatch(Value, @"^[0-9]+$"); if (!result || 6 > Value.Length) { return null; } string val = Value.Substring(0, 6); int checkDigit = 0; for (int i = 0; i < val.Length; i++) { checkDigit += int.Parse(val.Substring(i, 1)) * (7 - i); } checkDigit = checkDigit % 11; if (checkDigit == 0) { return "1"; } else if (checkDigit == 1) { return "0"; } else { return (11 - checkDigit).ToString(); } }
C#で9DRの計算
////// 9DR 計算 /// NW-7 /// /// ///public static string Get9DR(string Value) { bool result = Regex.IsMatch(Value, @"^[0-9]+$"); if (!result) { return null; } return (ulong.Parse(Value) % 9).ToString(); }
C#で7DSRの計算
////// 7DSR 計算 /// NW-7 /// /// ///public static string Get7DSR(string Value) { bool result = Regex.IsMatch(Value, @"^[0-9]+$"); if (!result) { return null; } string value =(ulong.Parse(Value) % 7 == 0 ? 0 : 7 - (ulong.Parse(Value) % 7)).ToString(); return value; }
C#でモジュラス16の計算
////// モジュラス16 計算 /// NW-7 /// /// ///public static string GetModulus16(string Value) { bool result = Regex.IsMatch(Value, @"^[0-9|\-|$|:|/|・|+|A-D]+$"); if (!result) { return null; } long digit = 0; for (int i = 0; i < Value.Length; i++) { digit += Array.IndexOf(modulus16CharList, Value[i]); } string value = modulus16CharList[(digit % 16) == 0 ? 0 : 16 - (digit % 16)].ToString(); return value; }
C#で7DRの計算
////// 7DR 計算 /// NW-7 /// /// ///public static string Get7DR(string Value) { bool result = Regex.IsMatch(Value, @"^[0-9]+$"); if (!result) { return null; } string value = (ulong.Parse(Value) % 7).ToString(); return value; }
登録:
投稿 (Atom)