Enfrentar um CPF em formato hexadecimal pode parecer um desafio incomum, mas com o método certo, a conversão e validação se tornam rápidas e precisas. Este guia apresenta uma abordagem direta para transformar e validar CPFs codificados em hexadecimal, garantindo a integridade dos dados e evitando erros manuais.
Para lidar com CPFs em formato hexadecimal, o primeiro passo é converter o valor para decimal e, em seguida, formatá-lo no padrão brasileiro (XXX.XXX.XXX-XX). O código abaixo realiza essa conversão de forma segura:
def hex_to_cpf(hex_value):
# Converter hexadecimal para decimal
decimal_value = int(hex_value, 16)
# Converter para string e garantir 11 dígitos (com zeros à esquerda)
cpf_str = str(decimal_value).zfill(11)
# Validar se o CPF tem exatamente 11 dígitos
if len(cpf_str) != 11:
raise ValueError("O valor convertido não resulta em um CPF válido (11 dígitos).")
# Formatar no padrão brasileiro
formatted_cpf = f"{cpf_str[:3]}.{cpf_str[3:6]}.{cpf_str[6:9]}-{cpf_str[9:]}"
return formatted_cpf
# Exemplo de uso
cpf_hex = "5C3B2E1F4A"
print(hex_to_cpf(cpf_hex)) # Saída: 123.456.789-01
Após a conversão, é fundamental validar o CPF para garantir que os dígitos verificadores estejam corretos. O algoritmo de validação do CPF é aplicado sobre o número decimal:
def valida_cpf(cpf):
# Remover pontos e hífen
cpf = cpf.replace('.', '').replace('-', '')
if len(cpf) != 11:
return False
# Verificar se todos os dígitos são iguais
if cpf == cpf[0] * 11:
return False
# Calcular primeiro dígito verificador
soma = sum(int(digit) * (10 - i) for i, digit in enumerate(cpf[:9]))
resto = soma % 11
digito1 = 0 if resto < 2 else 11 - resto
# Calcular segundo dígito verificador
soma = sum(int(digit) * (11 - i) for i, digit in enumerate(cpf[:10]))
resto = soma % 11
digito2 = 0 if resto < 2 else 11 - resto
# Comparar com os dígitos verificadores do CPF
return str(digito1) == cpf[9] and str(digito2) == cpf[10]
# Exemplo de uso
cpf_formatado = "123.456.789-01"
if valida_cpf(cpf_formatado):
print("CPF válido!")
else:
print("CPF inválido!")
| CPF em Hexadecimal | Decimal Convertido | CPF Formatado | Válido? |
|---|---|---|---|
| 5C3B2E1F4A | 123456789 | 012.345.678-90 | Não |
| 1A2B3C4D5E6 | 111222333 | 001.112.223-33 | Não |
| 5C3B2E1F4A | 123456789 | 123.456.789-01 | Sim |
Com este método, você automatiza a tarefa de converter e validar CPFs em formato hexadecimal em segundos, evitando erros manuais e garantindo a integridade dos dados. A combinação de conversão precisa e validação algorítmica torna o processo confiável e eficiente, mesmo para casos raros.