电竞比分网-中国电竞赛事及体育赛事平台

分享

自動轉換15位身份證號碼位18位

 kenan 2006-01-27

功能:將15的身份證號升為18位(根據(jù)GB 11643-1999) 

參數(shù):原來的號碼(15位) 

返回:升位后的18位號碼 

用法:=IDCODE(a1)  (假設A1放的是原15位號碼)

關于身份證號碼最后一位的校驗碼的算法如下:

我國現(xiàn)行使用公民身份證號碼有兩種尊循兩個國家標準,〖GB 11643-1989〗和〖GB 11643-1999〗。

〖GB 11643-1989〗中規(guī)定的是15位身份證號碼:排列順序從左至右依次為:六位數(shù)字地址碼,六位數(shù)字出生日期碼,三位數(shù)字順序碼,其中出生日期碼不包含世紀數(shù)。

〖GB 11643-1999〗中規(guī)定的是18位身份證號碼:公民身份號碼是特征組合碼,由十七位數(shù)字本體碼和一位數(shù)字校驗碼組成。排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位數(shù)字校驗碼。

地址碼表示編碼對象常住戶口所在縣(市、旗、區(qū))的行政區(qū)劃代碼。

生日期碼表示編碼對象出生的年、月、日,其中年份用四位數(shù)字表示,年、月、日之間不用分隔符。

順序碼表示同一地址碼所標識的區(qū)域范圍內,對同年、月、日出生的人員編定的順序號。順序碼的奇數(shù)分給男性,偶數(shù)分給女性。

校驗碼是根據(jù)前面十七位數(shù)字碼,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。

公式如下:

∑(a[i]*W[i]) mod 11 ( i = 2, 3, …, 18 ) (1)

”*” 表示乘號

i——–表示身份證號碼每一位的序號,從右至左,最左側為18,最右側為1。

a[i]—–表示身份證號碼第 i 位上的號碼

W[i]—–表示第 i 位上的權值 W[i] = 2^(i-1) mod 11

計算公式 (1) 令結果為 R

根據(jù)下表找出 R 對應的校驗碼即為要求身份證號碼的校驗碼C。

R 0 1 2 3 4 5 6 7 8 9 10

C 1 0 X 9 8 7 6 5 4 3 2

由此看出 X 就是 10,羅馬數(shù)字中的 10 就是X,所以在新標準的身份證號碼中可能含有非數(shù)字的字母X。

Function IDCode(sCode15)

Dim i,num

Dim code

num = 0

IDCode = Left(sCode15, 6) + “19″ + Right(sCode15, 9)

‘ 計算校驗位

For i = 18 To 2 Step -1

num = num + (2 ^ (i - 1) Mod 11) * (Mid(IDCode, 19 - i, 1))

Next

num = num Mod 11

Select Case num

Case 0

code = “1″

Case 1 

code = “0″

Case 2

code = “X”

Case Else

code = Trim(CStr(12 - num))

End Select

IDCode = IDCode + code

End Function

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多