18位身份证的最后一位校验码是怎样生成的!?

    //18位身份证:6位行政区域码+8位出生日期+3位顺序码+1位检验码
       //顺序码奇数为男,偶数为女
       //根据 ISO 7064:1983.MOD 11-2 校验码计算法
//1、根据给定的17位数字,计算其相应的加权因子的乘积的和S
//2、计算 S/11 的余数 T
//3、计算 (12-T)/11 的余数 R
//4、R即为计算得到的校验码,如果R=10,这校验码位"x",否则为数字R
public String getVerify(int[] num17){
       final int[] power = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
	for (int i = 0,sum=0; i < num17.length; i++) {
		sum = sum+num17[i]*power[i];
	}
	int T = sum%11;
	int R = (12-T)%11;
	return R==10?"x":String.valueOf(R);
}
public String getVerify(String num17){
	char[] carr = num17.toCharArray();
	int[] iarr = new int[17];
	for (int i = 0; i < iarr.length; i++) {
		iarr[i] = new Integer(String.valueOf(carr[i]));
	}
	return getVerify(iarr);
}

本文固定链接: http://www.ioedo.com/231.html | 网页设计师交流网_edo欧晓峰博客_网页设计师一枚_专注于网页设计

该日志由 admin 于2013年02月01日发表在 分享精彩 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 18位身份证的最后一位校验码是怎样生成的!? | 网页设计师交流网_edo欧晓峰博客_网页设计师一枚_专注于网页设计
关键字: , ,

18位身份证的最后一位校验码是怎样生成的!?:目前有4 条留言

  1. 分析的很透彻,很欣赏你的看法,学习了。

    2013-02-02 22:07 [回复]
  2. 地板
    LuOpera:

    这个,这个貌似懂了…… 😀

    2013-02-03 00:55 [回复]
  3. 分析的很透彻,很欣赏你的看法,学习了。

    2013-02-05 08:59 [回复]
  4. 沙发
    乐天堂:

    我去这么麻烦,懂的也没多大意义吧~

    2013-02-08 09:36 [回复]

发表评论


快捷键:Ctrl+Enter