根據運行的環境,操作系統可以分為桌面操作系統,手機操作系統,服務器操作系統,嵌入式操作系統等。 國家質量技術監督局于1999年7月1日實施的GB11643-1999“公民編號”中明確規定了18位ID卡標準. GB11643-1999“公民編號”是GB11643的修訂版. -1989年的“社會安全號碼”,指出原來的標準名稱“社會安全號碼”已重命名為“公民身份號碼”,而GB11643-1999中的“公民身份號碼”將從實施日期起代替GB11643-1989. GB11643-1999“公民號”的主要內容如下: 一個,范圍 該標準規定了公民編號的編碼對象,編號的結構和表達方式,以便每個編碼對象獲得唯一且未更改的合法編號. 第二個編碼對象 公民編號是為具有中華人民共和國國籍的公民編碼的. 三,數字的結構與表示 1. 數字結構 公民身份號碼是功能的組合,由一個17位數字的身體代碼和一位數字的校驗代碼組成. 從左到右的排列順序是: 六位地址碼,八位出生日期碼,三位順序碼和一位校驗碼. 2. 地址代碼 指明編碼對象永久居所所在縣(市,旗,區)的行政區劃代碼,并應按照GB / T2260的規定執行. 3. 出生日期代碼 根據GB / T7408的規定,指示編碼對象的出生年月日,并且在年月日代碼之間沒有分隔符. 4. 序列碼 表示在同一地址代碼標識的區域內,給同一年,同一月,同一天出生的人分配了序列號,男性分配了序列號,偶數分配了偶數. 數字分配給女性. 5. 驗證碼 (1)17位數字本體代碼的加權和公式 S = Sum(Ai * Wi),i = 0,...,16,首先求和前17位數字的權重 Ai: 表示第i個位置的ID編號的數值 Wi: 代表第i個位置的權重因子 Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (2)計算模塊 Y = mod(S,11) (3)通過模塊獲取相應的校驗碼 Y: 0 1 2 3 4 5 6 7 8 9 10 校驗碼: 1 0 X 9 8 7 6 5 4 3 2 四,示例如下: 北京市朝陽區: 11010519491231002X 廣東省汕頭市: 440524188001010014 以下是程序代碼: 私有字符串CheckCidInfo(string cid) { string [] aCity = new string [] {null,null,null,null,null,null,null,null,null,null,null,“北京”,“天津”,“河北”,“山西” ,“內蒙古”,零,零,零,零,零,“遼寧”,“吉林”,“黑龍江”,零,零,零,零,零,零,零,“上海”,“江蘇”,“浙江”號碼驗證算法,“安威”,“福建”,“江西”,“山東”,零,零,零,“河南”,“湖北”,“湖南”,“廣東”,“廣西”,“海南” ,null,null,null,“重慶”,“四川”,“貴州”,“云南”,“西藏”,null,null,null,null,null,null,null,“陜西”,“甘肅”,“青!,“寧夏”,“新疆”,零,零,零,零,零,“臺灣”,零,零,零,零,零,零,零,零號碼驗證算法,零,零,“香港”, “ Macau”,null,null,null,null,null,null,null,null,“外國”}; double iSum = 0; string info =“”; System.Text.RegularExpressions.Regex rg =新的System.Text.RegularExpressions.Regex(@“ ^ \ d {17}(\ d | x)$”); System.Text.RegularExpressions.Match mc = rg.Match(cid); if(!mc.Success) { 返回“”; } cid = cid.ToLower(); cid = cid.Replace(“ x”,“ a”); if(aCity [int.Parse(cid.Substring(0,2))] == null) { 返回“非法區域”; } 嘗試 { DateTime.Parse(cid.Substring(6,4)+“-” + cid.Substring(10,2)+“-” + cid.Substring(12,2)); } 抓住 { 返回“非法生日”; } for(int i = 17; i> = 0; i-) { iSum + =(System.Math.Pow(2,i))* int.Parse(cid [17-i] .ToString(),System.Globalization.NumberStyles.HexNumber); } if(iSum!= 1) return(“非法證書編號”); return(aCity [int.Parse(cid.Substring(0,2))] +“,” + cid.Substring(6,4)+“-” + cid.Substring(10,2)+“- “ + cid.Substring(12,2)+”,“ +(int.Parse(cid.Substring(16,1))%2 ==1?” Male“: ” Female“)); } 通話測試: Response.Write(CheckCidInfo(“ 340524198002300019”)); Response.Write(CheckCidInfo(“ 34052419800101001x”));
|
溫馨提示:喜歡本站的話,請收藏一下本站!