启辰互联的gravatar头像
启辰互联 2013-01-04 12:07:30

18位身份证的最后一位校验码生成

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

       //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);
}

 


最代码官方编辑于2017-6-8 21:43:16

打赏

文件名:card.zip,文件大小:0K 下载
  • /
    • /card.txt
最代码最近下载分享源代码列表最近下载
948394963  LV2 2021年4月25日
16693212235  LV4 2020年7月16日
风步绝  LV1 2020年1月22日
blueskyroof  LV9 2019年9月20日
饺子有个排骨梦  LV4 2018年8月26日
ss3581948762  LV2 2018年3月23日
yhcyhcyhc  LV22 2017年11月27日
最代码官方  LV168 2017年6月8日
AXIN  LV36 2014年1月20日
juedi  LV9 2013年1月4日
最代码最近浏览分享源代码列表最近浏览
sky1044  LV1 2月19日
miiiji 2022年6月10日
暂无贡献等级
948394963  LV2 2021年4月25日
16693212235  LV4 2020年7月16日
大吴大吴大吴  LV4 2020年5月28日
lllpppwww  LV5 2020年4月1日
风步绝  LV1 2020年1月22日
peng99  LV1 2019年12月25日
5555小耗子  LV7 2019年10月8日
blueskyroof  LV9 2019年9月20日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友