java中身份证号15位转18位

/**
 * 将15位转换为18位
 * @param idCode 15位身份证号
 * @return String 18位身份证号
 */
public String toEighteen(String idCode) {
     
    idCode = idCode.substring(0, 6) + "19" + idCode.substring(6);//加入年份,变成17位
     
    //计算校验位   begin
    char[] Ai = idCode.toCharArray();
    int[] Wi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; 
    char[] verifyCode = {'1','0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}; 
    int S = 0;
    int Y; 
    for(int i = 0; i < Wi.length; i++){ 
        S += (Ai[i] - '0') * Wi[i]; 
    }
    Y = S % 11;
    //校验位计算结果verifyCode[Y] end
     
    idCode += verifyCode[Y];
    return idCode;
}

 

posted @ 2015-03-12 14:03  好人卡收藏家  阅读(2146)  评论(0编辑  收藏  举报