using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OrganizationCode { class Program { public static void Main(string[] args) { string y_bm = "71774346"; //y_bm = "71774346-9"; //y_bm = "73767624-0"; //y_bm = "74549579-X"; y_bm = "74610229-x"; Console.WriteLine(y_bm); string bm = Code9(y_bm); Console.WriteLine(bm); } //組織機構代碼校驗碼(驗證程序) //組織機構代碼71774346-9,73767624-0 //規定本體代碼PDY00001至PDY99999為自定義區,供各系統編制內部組織機構代碼使用。 //自定義區內編制的組織機構代碼不作為個系統之間信息交換的依據 //組織機構代碼管理辦法 編制規則 //校驗碼按照以下公式計算: /*C9=11-MOD(∑Ci(i=1→8)×Wi,11) 式中: MOD——代表求余函數; i——代表代碼字符從左至右位置序號; Ci——代表第i位上的代碼字符的值(具體代碼字符見附表); C9——代表校驗碼; Wi——代表第i位上的加權因子,其數值見下表: i=1,2,3,4,5,6,7,8 Wi=3,7,9,10,5,8,4,2 當C9的值為10時,校驗碼應用大寫的拉丁字母X表示;當C9的值為11時校驗碼用0表示。 */ //代碼字符機器處理字符數值 // 0 0 1 1 9 9 A 10 B 11 Z 35 public static string Code9(string str_in) { string rbc = ""; //W權位 int[] wArray = new int[] { 3, 7, 9, 10, 5, 8, 4, 2 }; string str_in_U = str_in.ToUpper(); char c; int zz = 0, z = 0; for (int i = 0; i <= 7; i++) { c = char.Parse(str_in.Substring(i, 1)); if (c >= 'A' && c <= 'Z') //A-Z字符 { z = ((int)c - 55) * wArray[i]; } else if (c >= '0' && c <= '9') //0-9字符 { z = int.Parse(c.ToString()) * wArray[i]; } else { rbc = "Err不能輸入其他字符錯誤碼"; return rbc; } zz += z; } string C9 = ""; int jav = 11 - (zz % 11); if (jav == 10) { C9 = "X"; } else if (jav == 11) { C9 = "0"; } else { C9 = jav.ToString().Trim(); //刪除文本前導空格 } rbc = str_in.Substring(0, 8) + "-" + C9;//全國組織機構代碼8位本體位加一個校驗位 return rbc; } } }