在做身份證驗(yàn)證的時候,補(bǔ)習(xí)了一下身份證組成規(guī)則。突然想到把這些規(guī)則組成一個程序。
先看看下面一段簡介,人人上看到的 http://blog.renren.com/blog/200883456/730064313,介紹挺全的。
身份證號碼的編排規(guī)則
身份證號碼中這些數(shù)字是怎樣排列的,每個數(shù)字表示什么意思呢?下面就讓我們一起來探索其中的規(guī)律吧!新的身份證號碼是由18位數(shù)字組成的,它們分別表示:







看看下面的格式










下面是國家標(biāo)準(zhǔn)
18位身份證標(biāo)準(zhǔn)在國家質(zhì)量技術(shù)監(jiān)督局于1999年7月1日實(shí)施的GB11643-1999《公民身份號碼》中做了明確規(guī)定。
GB11643-1999《公民身份號碼》為GB11643-1989《社會保障號碼》的修訂版,其中指出將原標(biāo)準(zhǔn)名稱“社會保障號碼”更名為“公民身份號碼”,另外GB11643-1999《公民身份號碼》從實(shí)施之日起代替GB11643-1989。
公民身份號碼是特征組合碼,由十七位數(shù)字本體碼和一位校驗(yàn)碼組成。排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位校驗(yàn)碼。其含義如下:
1. 地址碼:表示編碼對象常住戶口所在縣(市、旗、區(qū))的行政區(qū)劃代碼,按GB/T2260的規(guī)定執(zhí)行。
2. 出生日期碼:表示編碼對象出生的年、月、日,按GB/T7408的規(guī)定執(zhí)行,年、月、日分別用4位、2位、2位數(shù)字表示,之間不用分隔符。
3. 順序碼:表示在同一地址碼所標(biāo)識的區(qū)域范圍內(nèi),對同年、同月、同日出生的人編定的順序號,順序碼的奇數(shù)分配給男性,偶數(shù)分配給女性。
校驗(yàn)的計算方式:
1. 對前17位數(shù)字本體碼加權(quán)求和
公式為:S = Sum(Ai * Wi), i = 0, ... , 16
其中Ai表示第i位置上的身份證號碼數(shù)字值,Wi表示第i位置上的加權(quán)因子,其各位對應(yīng)的值依次為: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
2. 以11對計算結(jié)果取模
Y = mod(S, 11)
3. 根據(jù)模的值得到對應(yīng)的校驗(yàn)碼
對應(yīng)關(guān)系為:
Y值: 0 1 2 3 4 5 6 7 8 9 10
校驗(yàn)碼: 1 0 X 9 8 7 6 5 4 3 2
看完這些信息,能不能寫個程序解決下面這個問題呢。
