Python系列-你所不知道的身份证号码
众所周知,我国现行身份证号码为18位,前6位为地区编码,中间8位为出生日期,2位派出所编码,1位性别编码,最后一位是校验位。
具体表达如下:
(1)第1至2位数字代表所在省(直辖市、自治区)的代码;
(2)权重第3至4位数字代表所在地级市(自治州)的代码;
(3)权重第5至6位数字代表所在区(县、自治县、县级市)的代码;
(4)权重第7-14位数字代表出生年、月、日;
(5)权重第15-16位数字代表所在的派出所代码;
(6)权重第17位数字表示性别,奇数表示男性,偶数表示女性;
(7)权重第18位是校验码,及个人信息码,由前17位数字计算得到。
身份证号码不是随便编制出来的,是有固定的数字编码和一种数字计算出来的校验位组成的。一个一二出生下来后,为什么当地PCS就可以根据出生证明上的数据,就可以在你家户口本上打印出来小孩的身份证号码。小孩的户籍地区编码是固定的,小孩的出生日期是固定的,入户籍的派出所编码是固定的,小孩的性别是确定的,根据前面的17位数字计算一个校验位,从而确定18位身份证号码。
身份证号码每一位的权重如下表所示,每一位的权重都是固定的。
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
权重Wi | 7 | 9 | 10 | 5 | 8 | 4 | 1 | 6 | 3 | 7 | 9 | 10 | 5 | 8 | 4 | 2 |
那怎样计算校验位呢?
Y=(ΣAi*Wi)mod11
计算出来的Y并不是最后的校验数,Y有个对应数,入下表所示:
Y | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
校验码 | 1 | 0 | X | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
那如文章开头所示的身份证号码的校验位是如何计算的呢?计算过程如下:
Y=3*7+4*9+0*10+5*5+2*8+4*5+1*2+9*1+8*6+0*3+0*7+1*9+0*10+1*5+0*8+0*4+1*2=189mod11=2
数字2对应的校验码X,则身份证号码的最后一位是X,文章开头的身份证号校验通过。
欢迎各位,作者还真不知道,欢迎各位网友在评论区留言告诉我。
页面更新:2024-03-28
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号