设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3546|回复: 7
打印 上一主题 下一主题

如何把15位身份证转成18位??

[复制链接]
跳转到指定楼层
1#
发表于 2010-3-16 17:29:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我百度到这样的算法可是不知道转换成宏。请大师指点
“下面举例说明该计算方法。
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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2010-3-16 17:35:00 | 只看该作者
本帖最后由 众叛亲离 于 2010-3-16 17:45 编辑

已在本论坛里面找到,况且验证了10组号码,均为正确!不好意思,没先找再发!这个是地址:http://www.office-cn.net/vvb/vie ... =%C9%ED%B7%DD%D6%A4
3#
发表于 2010-4-1 19:19:21 | 只看该作者
上面的链接无效呀!!
4#
发表于 2011-1-3 22:24:58 | 只看该作者
楼主试过验证码那段是否正确吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-25 23:39 , Processed in 0.098081 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表