(1) Estrutura do número de identificação 18
O número de identidade do cidadão é um código de combinação característico, composto por um código corporal de dezessete dígitos e um código de verificação de um dígito.
A ordem da esquerda para a direita é: código de endereço de seis dígitos, código de data de nascimento de oito dígitos, código de sequência de três dígitos e código de verificação de um dígito.
1. Código de endereço
Indica o código de divisão da área administrativa do município (cidade, bandeira, distrito) onde está localizada a residência permanente do objeto codificado, e deve ser implementado de acordo com o disposto em GB/T2260.
2. Código da data de nascimento
Indica o ano, mês e dia de nascimento do objeto de codificação. É implementado de acordo com as disposições de GB/T7408. Não há separador entre os códigos de ano, mês e dia.
3. Código de sequência
Indica que dentro da área identificada pelo mesmo código de endereço, os números de sequência são atribuídos às pessoas nascidas no mesmo ano, mês e dia. Os números ímpares dos códigos de sequência são atribuídos aos homens e os números pares são atribuídos às mulheres. .
4. Verifique as etapas de cálculo do código
(1) Fórmula de soma ponderada do código de ontologia de dezessete dígitos
S = Soma (Ai * Wi), i = 0, ..., 16, primeiro some os pesos dos primeiros 17 dígitos
Ai: representa o valor digital do número de identificação na i-ésima posição (0~9)
Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (indica o fator de ponderação na i-ésima posição)
(2) Modelo de cálculo
Y = mod(S, 11)
(3) De acordo com o módulo, encontre o código de verificação correspondente
Y: 0 1 2 3 4 5 6 7 8 9 10
Código de verificação: 1 0 X 9 8 7 6 5 4 3 2
(2) Exemplo de programa para obtenção do último dígito do código de verificação baseado no código de ontologia de 17 dígitos
Copie o código do código da seguinte forma:
classe pública ID18 {
int[] peso={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2} //Peso do código da ontologia de dezessete dígitos;
char[] validar={ '1','0','X','9','8','7','6','5','4','3','2'} ; //mod11, correspondente ao valor do caractere do código de verificação
caractere público getValidateCode(String id17){
int soma=0;
modo interno=0;
for(int i=0;i<id17.length();i++){
soma=soma+Integer.parseInt(String.valueOf(id17.charAt(i)))*peso[i];
}
modo=soma%11;
retornar validar[modo];
}
public static void main(String[] args){
Id18 teste = novo Id18();
System.out.println("Código de verificação deste cartão de identificação:"+test.getValidateCode("14230219700101101")); //Código de verificação deste cartão de identificação: 3
}
}
(3) Explicação
1. O programa pode obter o código de verificação correspondente com base no código de ontologia existente de 17 dígitos.
2. Este programa pode eliminar números de identificação com códigos de verificação incorretos.
3. O ano de nascimento do cartão de identificação de 15 dígitos utiliza os 2 últimos dígitos do ano, sem o último dígito do código de cheque.
4. Um cartão de identificação completo tem 18 dígitos e o último dígito de verificação pode ser um não dígito. Em um de nossos projetos, o banco de dados salva os primeiros 17 dígitos, o que pode acelerar algumas instruções SQL (como inner join)! ! !