`
whq
  • 浏览: 45698 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

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

J# 
阅读更多
中国大陆的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;
 }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics