Office中国论坛/Access中国论坛

标题: 如何把15位身份证转成18位?? [打印本页]

作者: 众叛亲离    时间: 2010-3-16 17:29
标题: 如何把15位身份证转成18位??
我百度到这样的算法可是不知道转换成宏。请大师指点
“下面举例说明该计算方法。
15位的身份证编码首先把出生年扩展为4位,简单的就是增加一个19,但是这对于1900年出生的人不使用(这样的寿星不多了) 某男性公民身份号码本体码为34052419800101001,首先按照公式⑴计算: ∑(ai×Wi)(mod 11)……………………………………(1) 公式(1)中: i表示号码字符从由至左包括校验码在内的位置序号; ai表示第i位置上的号码字符值; Wi示第i位置上的加权因子,其数值依据公式Wi=2(n-1)(mod 11)计算得出。 i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ai 3 4 0 5 2 4 1 9 8 0 0 1 0 1 0 0 1 a1 Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 ai×Wi 21 36 0 25 16 16 2 9 48 0 0 9 0 5 0 0 2 a1 根据公式(1)进行计算: ∑(ai×Wi) =(21+36+0+25+16+16+2+9+48++0+0+9+0+5+0+0+2) = 189 189 ÷ 11 = 17 + 2/11 ∑(ai×Wi)(mod 11) = 2 然后根据计算的结果,从下面的表中查出相应的校验码,其中X表示计算结果为10: ∑(ai×WI)(mod 11) 0 1 2 3 4 5 6 7 8 9 10 校验码字符值ai 1 0 X 9 8 7 6 5 4 3 2 根据上表,查出计算结果为2的校验码为所以该人员的公民身份号码应该为 34052419800101001X。 a[0]*7+a*9+a*10+a*5+a*8+a*4+a*2+a*1+a*6+a*3 +a*7+a[11]*9+a[12]*10+a[13]*5+a[14]*8+a[15]*4+a[16]*2

作者: 众叛亲离    时间: 2010-3-16 17:35
本帖最后由 众叛亲离 于 2010-3-16 17:45 编辑

已在本论坛里面找到,况且验证了10组号码,均为正确!不好意思,没先找再发!这个是地址:http://www.office-cn.net/vvb/vie ... =%C9%ED%B7%DD%D6%A4
作者: lookmeupacc    时间: 2010-4-1 19:19
上面的链接无效呀!!
作者: 不聪明的一休    时间: 2011-1-3 22:24
楼主试过验证码那段是否正确吗




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3