标题: 懂VB的进来帮偶看下 [打印本页] 作者: 元宝妹妹 时间: 2005-1-13 21:50 标题: 懂VB的进来帮偶看下 Function IDCode15to18(sCode15 As String) As String
'* 功能:将15的身份证号升为18位(根据GB 11643-1999)
'* 参数:原来的号码
'* 返回:升位后的18位号码
Dim i As Integer
Dim num As Integer
Dim code As String
num = 0
IDCode15to18 = Left(sCode15, 6) + "19" + Right(sCode15, 9)
' 计算校验位
For i = 18 To 2 Step -1
num = num + (2 ^ (i - 1) Mod 11) * (Mid(IDCode15to18, 19 - i, 1))
Next i
num = num Mod 11
Select Case num
Case 0
code = "1"
Case 1
code = "0"
Case 2
code = "X"
Case Else
code = Trim(Str(12 - num))
End Select
IDCode15to18 = IDCode15to18 + code
End Function
校验码的计算:
2的N次方(N=17 to 1)除以 11 ,取余数乘以 IDCode15to18 从第一位开始的数字字符。将所得结果存放到 num 累加器。
又不够严谨!
num = num + (2 ^ (i - 1) Mod 11) * Cint((Mid(IDCode15to18, 19 - i, 1)))