解析身份证_身份证号码的规则完美解析

cdde28932fe432973e1836bea17d04a1.png

1、国家标准

根据《中华人民共和国国家标准GB 11643-1999》中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。顺序码的奇数分给男性,偶数分给女性。校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

2.编排规则

身份证号码由18位数字组成,他们分别为:

(1)前1、2位表示所在的省份

(2)前3、4位表示所在的城市

(3)前5、6位表示所在区县

(4)第7—14位表示出生年、月、日

(5)第15-17位表示同一地址辖区内的,以及同年同月同日出生的人的顺序

(6)同时17位兼顾性别标识功能,奇数分配给男性,偶数分配给女性。

(7)第18位是校检码

3、第18位校验码的计算方法。

对一个身份证最重要的就是最后一位校验码的计算,对身份证号码的验证最后一位也显得非常重要。下面就来说说最后一位校验位的计算方法。

先来看一个计算校验位的公式:

23a020e619199dca1ef6c87bbf550392.png
73f496bacd597973ef8045f1ce8543e8.png
51ccef389f5e984a345bd4532c82c04f.png

得出校验位为X

综上可以计算出此人的身份证号码为:34052419800101001X。

以上就是身份证校验位的计算方法,如果只有这一个当然可以手动计算,作为程序员怎么可能干这种低级的工作。

下面就教大家如何使用java计算校验位,其中前17位就不介绍怎么拼接了。


private static final int[] wi = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10,5, 8, 4, 2 }; // 加权因子private static final String[] vi = { "1
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值