身份证第18位验证码计算函数
程序代码:
Public Function 计算身份证校验位(cs As String) As String Const 检验码查询位 = "1 0 X 9 8 7 6 5 4 3 2" Const 每位权数 = "7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1" Dim fj() As String '用来分解上面二个常量的 Dim Q(16) As Long '每位权数的数组 Dim W(16) As Long '身份证17位 Dim i As Long '循环变量 Dim M As Long '和 Dim j As Long '除11 后的余 If Len(cs) <> 17 Then '判断长度,不等于17,则退出,无返回值 Exit Function End If fj = Split(每位权数, " ") '分解权数 M = 0 For i = 1 To 17 '循环 W(i - 1) = Val(Mid(cs, i, 1)) '取身份证每位值 Q(i - 1) = Val(fj(i - 1)) '取权数 M = M + W(i - 1) * Q(i - 1) '积累加 Next i j = M Mod 11 '取余 fj = Split(检验码查询位, " ") '分解验证码表 计算身份证校验位 = fj(j) '查表,返回结果 End Function
身份证第18位验证码计算函数
今天需要,临时写的.
算法原理,不提供了,网上大把的有.