java 身份证15位转18位
1 /** 2 * 根据身份证号获取性别 3 * 4 * @param pid 5 * 身份证号 6 * @return 性别 F为女M为男 7 */ 8 public static String getSexByPid(String pid)throws Exception{ 9 if(pid!=null&&(pid.trim().length()== 15||pid.trim().length()==18)){ 10 if(pid.trim().length()==15){ 11 String pid18 = "";//pid15To18(pid); 12 if(Integer.parseInt(pid18.substring(16,17))%2==0){ 13 return "女"; 14 }else{ 15 return "男"; 16 } 17 }else{ 18 if(Integer.parseInt(pid.substring(16,17))%2==0){ 19 return "女"; 20 }else{ 21 return "男"; 22 } 23 } 24 }else{ 25 return null; 26 } 27 } 28 29 30 /** 31 * 15位身份证 转18位 32 * lsp 2017年1月19日13:47:52 33 * @param fifteenIDCard 34 * @return 35 * @throws Exception 36 */ 37 public static String getEighteenIDCard(String fifteenIDCard) throws Exception { 38 if (fifteenIDCard != null && fifteenIDCard.length() == 15) { 39 StringBuilder sb = new StringBuilder(); 40 sb.append(fifteenIDCard.substring(0, 6)).append("19").append( 41 fifteenIDCard.substring(6)); 42 sb.append(getVerifyCode(sb.toString())); 43 return sb.toString(); 44 } else { 45 throw new Exception("不是15位的身份证"); 46 } 47 } 48 49 /** 50 * 获取身份证的校验码 51 * lsp 2017年1月19日13:47:52 52 * @param idCardNumber 53 * @return 54 * @throws Exception 55 */ 56 public static char getVerifyCode(String idCardNumber) throws Exception { 57 if (idCardNumber == null || idCardNumber.length() < 17) { 58 throw new Exception("不合法的身份证号码"); 59 } 60 char[] Ai = idCardNumber.toCharArray(); 61 int[] Wi = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }; 62 char[] verifyCode = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', 63 '2' }; 64 int S = 0; 65 int Y; 66 for (int i = 0; i < Wi.length; i++) { 67 S += (Ai[i] - '0') * Wi[i]; 68 } 69 Y = S % 11; 70 return verifyCode[Y]; 71 } 72 73 public static void main(String[] args) throws Exception { 74 System.out.println(getEighteenIDCard("330324360802695")); 75 }