身份证的组成有什么规律(身份证号码的规则完美解析)

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位校验码的计算方法。

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

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

得出校验位为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", "0", "X", "9", "8", "7", "6",

"5", "4", "3", "2" }; // 根据校验码获取检验位

// 获取校验位

public static String getVifyCode(String num) {

int s = 0;

int[] a = new int[num.length()];

// 这个是将字符串转换成int数组

for (int i = 0; i < num.length(); i++) {

a[i] = Integer.parseInt(String.valueOf(num.charAt(i)));

}

// 计算加权和

for (int i = 0; i < num.length(); i++) {

s = s + a[i] * wi[i];

// System.out.println("a"+i +"="+a[i]+",w"+i+"="+wi[i]+",s="+s);

}

int vifyCodeint = s % 11;

// 获取校验位

String vifyCode = vi[vifyCodeint];

return vifyCode;

}

生成后的校验位如何校验是不是可以用的呢,给一个可以校验的地址:https://www.ctools.top/CloudTools/numberIdCard.html

不只是可以校验,还可以生成的哦,其中https://www.ctools.top还有其他的小工具。我已经把他收藏了。

写在最后:

由于身份证号码关联到个人,不要使用生成的身份证号码从事违法活动,否则这个身份证号码对应的人就遭殃了,做人还是要厚道一点!

本文分类:百科知识

本文标签:无

浏览次数:100 次浏览

发布日期:2024-07-13 13:16:13

本文链接:https://www.shuomingshu.cn/baike/351935.html

上一篇 >

小学算术题加减法技巧(小学数学加减乘除法方法归总)

下一篇 >

电子书阅读软件哪个好用(给大家分享几款好用的小说阅读器)