(1) Estructura de 18 números de identificación
El número de identidad de ciudadano es un código combinado característico, que consta de un código corporal de diecisiete dígitos y un código de control de un dígito.
El orden de izquierda a derecha es: código de dirección de seis dígitos, código de fecha de nacimiento de ocho dígitos, código de secuencia de tres dígitos y código de verificación de un dígito.
1. Código de dirección
Indica el código de división del área administrativa del condado (ciudad, bandera, distrito) donde se encuentra la residencia permanente del objeto de codificación y se implementará de acuerdo con las disposiciones de GB/T2260.
2. Código de fecha de nacimiento
Indica el año, mes y día de nacimiento del objeto de codificación. Se implementa de acuerdo con las disposiciones de GB/T7408. No hay separador entre los códigos de año, mes y día.
3. Código de secuencia
Indica que dentro del área identificada por el mismo código de dirección, los números de secuencia se asignan a las personas nacidas en el mismo año, mes y día. Los números impares de los códigos de secuencia se asignan a los hombres y los números pares a las mujeres. .
4. Verifique los pasos de cálculo del código.
(1) Fórmula de suma ponderada del código de ontología de diecisiete dígitos
S = Suma(Ai * Wi), i = 0, ..., 16, primero suma los pesos de los primeros 17 dígitos
Ai: representa el valor digital del número de identificación en la posición i-ésima (0~9)
Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (indica el factor de ponderación en la i-ésima posición)
(2) Modelo de cálculo
Y = modificación(S, 11)
(3) Según el módulo, busque el código de verificación correspondiente
Y: 0 1 2 3 4 5 6 7 8 9 10
Código de verificación: 1 0 X 9 8 7 6 5 4 3 2
(2) Ejemplo de programa para obtener el último dígito del código de verificación basado en el código de ontología de 17 dígitos
Copie el código de código de la siguiente manera:
clase pública Id18 {
int[] peso={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2} //Peso del código de ontología de diecisiete dígitos
char[] validar={ '1','0','X','9','8','7','6','5','4','3','2'} ; //mod11, correspondiente al valor del carácter del código de verificación
carácter público getValidateCode (cadena id17) {
suma int=0;
modo int=0;
para(int i=0;i<id17.length();i++){
suma=sum+Integer.parseInt(String.valueOf(id17.charAt(i)))*peso[i];
}
modo=suma%11;
devolver validar[modo];
}
principal vacío estático público (String [] argumentos) {
Prueba Id18=nueva Id18();
System.out.println("Código de verificación de esta tarjeta de identificación:"+test.getValidateCode("14230219700101101")); //Código de verificación de esta tarjeta de identificación: 3
}
}
(3) Explicación
1. El programa puede obtener el código de verificación correspondiente según el código de ontología de 17 dígitos existente.
2. Este programa puede eliminar números de identificación con códigos de verificación incorrectos.
3. El año de nacimiento de la tarjeta de identificación de 15 dígitos utiliza los últimos 2 dígitos del año, sin el último dígito del código de verificación.
4. Una tarjeta de identificación completa tiene 18 dígitos y el último dígito de control puede no ser un dígito. En uno de nuestros proyectos, la base de datos guarda los primeros 17 dígitos, lo que puede acelerar algunas declaraciones SQL (como la combinación interna). ! !