public void calculateCheckDigit() { String strCardNum = "PAK32018108031"; int[] ncardNUm = new int[14]; for (int i = 0; i < 3; i++) { ncardNUm[i] = strCardNum.substring(i, i + 1).getBytes()[0] - 55; System.out.println("ncardNUm = " + ncardNUm[i]); } for (int i = 3; i < strCardNum.length(); i++) { ncardNUm[i] = Integer.parseInt(strCardNum.substring(i, i + 1)); System.out.println("nNum = " + ncardNUm[i]); } int sum = 0; int[] weightNumber = new int[]{0x07, 0x03, 0x01}; for (int i = 0; i < strCardNum.length(); i++){ sum += ncardNUm[i] * weightNumber[i % 3]; } System.out.println("sum = " + sum); int checkValue = sum % 10; System.out.println("checkValue = " + checkValue); }
2017版外国人身份证七三一校验法计算校验值
于 2024-07-03 16:49:47 首次发布