|
从定义变量开始,帮你一句一句的解释:
定义 I 为整形
定义 num 为整形
定义 code 为字符串
初始化 i 赋值为0
函数返回字符串赋值为传递参数(sCode 字符串型)的左边6个字符,连接“19”字符,再连接sCode右边起9个字符。
假设sCode="310114780405002",执行到这里,返回值
IDCode15to18="31011419780405002"
这里的代码有点不太严谨。连接字符串最好使用
IDCode15to18 = Left(sCode15, 6) & "19" & Right(sCode15, 9)
这个时候 IDCode15to18 还是17位
校验码的计算:
2的N次方(N=17 to 1)除以 11 ,取余数乘以 IDCode15to18 从第一位开始的数字字符。将所得结果存放到 num 累加器。
又不够严谨!
num = num + (2 ^ (i - 1) Mod 11) * Cint((Mid(IDCode15to18, 19 - i, 1)))
将 num 累加器里的值再除以 11 取余数,将结果存放到num中。
如果余数为 0 则 IDCode15to18 末尾连接 "1"
如果余数为 1 则 IDCode15to18 末尾连接 "0"
如果余数为 2 则 IDCode15to18 末尾连接 "X"
其他的则 IDCode15to18 末尾连接 将(12-num)的结果转化成的字符串。
将最后结果返回。
OK,解释完毕!
|
|
|
|
|
|
|