18位身份证号码升位规则与实现方法

[color=blue][size=large]
关键字: javaee
中国大陆的18位身份证号码系有一个通式的:

1、2位表示户籍所在省份
3、4表示户籍所在城市
5、6位表示户籍所在区或县
7~10位表示出生年份
11、12位表示出生月份
13、14表示出生日
15~17系按顺序分配顺序码(奇数分配给男性,偶数分配给女性)
18位系跟据前17位计算出的校验码


前六位根据《中华人民共和国行政区划代码》(GB/T2260-1995)http://www.stats.gov.cn/tjbz/xzqhdm/index.htm来确定具体地区编码


15位身份证转到18位方法:

public String get18idCard(String idCard15) {
final int[] W = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 };
final String[] A = { "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" };
int i, j, s = 0;
String newid = idCard15;
newid = newid.substring(0, 6) + "19" + newid.substring(6, 15); //得17位
for (i = 0; i < newid.length(); i++) {
j = Integer.parseInt(newid.substring(i, i + 1)) * W[i];
s = s + j;
}
s = s % 11;
newid = newid + A[s]; //取最后一位校验码
return newid;
} [/size][/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值