Enviar um arquivo
  1. base64hub
  2. Outras bases
  3. Base16 (hex)

Codificador e decodificador Base16 (hex da RFC 4648)

Codifique texto como Base16 da RFC 4648, o alfabeto de 0 a 9 e de A a F com dois caracteres por byte, ou decodifique Base16 de volta para texto. Hello é 48656C6C6F.

Grátis sem cadastro, sem limites Local nada é enviado RFC 4648 alfabeto da seção 8, em maiúsculas Atualizado 27 de out. de 2026
Entrada 0Bytes 0 BSaída 0

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como usar o codificador Base16

  1. Digite ou cole o texto na entrada. O Base16 aparece na saída enquanto você digita.
  2. O Charset abaixo da entrada define como os caracteres viram bytes. UTF-8 é o padrão.
  3. Para decodificar, clique em Base16 (RFC 4648) → Texto acima da ferramenta, ou no botão ⇄ Inverter, que também move a saída atual para a entrada. Dígitos em minúsculas, espaços e dois-pontos na entrada são aceitos.
  4. Use Copiar saída ou Baixar para o resultado. Os menus De e Para mudam para outros formatos, como Base32 ou Base64, para comparar.

Para hex com separadores, prefixos 0x ou saída em minúsculas, o Texto para hex tem essas opções.

Base16 e a RFC 4648

A RFC 4648 define Base64, Base32 e Base16 lado a lado, e o Base16 é o mais simples dos três: não tem preenchimento, quebras de linha nem reagrupamento de bits. Cada byte é dividido em duas metades de 4 bits, e cada metade corresponde a um caractere. Os vetores de teste da própria RFC:

EntradaBase16
(vazio)(vazio)
f66
fo666F
foo666F6F
foob666F6F62
fooba666F6F6261
foobar666F6F626172

O comprimento da saída é sempre exatamente o dobro do número de bytes, e é por isso que o Base16 não precisa de caractere de preenchimento. O Base64 e o Base32 agrupam vários bytes por bloco e precisam completar o último bloco com =. A visão geral das RFCs mostra onde cada uma dessas codificações é especificada.

Base16 vs Base32 vs Base64

Os 12 bytes de Hello, world em cada codificação da RFC 4648:

CodificaçãoSaídaComprimento
Base1648656C6C6F2C20776F726C6424
Base32JBSWY3DPFQQHO33SNRSA====24 (20 sem preenchimento)
Base64SGVsbG8sIHdvcmxk16

O Base16 troca tamanho por clareza. Dá para ler os bytes direto nele e comparar valores dígito a dígito, e ele sobrevive a qualquer sistema que lide com letras e dígitos, inclusive os que não diferenciam maiúsculas. O Base64 é um terço mais curto e é o padrão quando os bytes precisam viajar dentro de JSON, e-mail ou URLs. A comparação de codificações vai além, incluindo Base58 e Base85.

Onde você encontra Base16

  • Digests de hash e checksums, geralmente impressos em minúsculas pelo sha256sum e ferramentas parecidas.
  • Fingerprints de chaves OpenPGP, que o GnuPG imprime em hex maiúsculo em grupos de quatro.
  • Vetores de teste em RFCs e outras especificações, onde valores de byte sem ambiguidade importam mais que o comprimento.
  • Protocolos e formatos que precisam de dados sem diferenciação de maiúsculas ou puramente alfanuméricos.

Para levar um valor desses para Base64, por exemplo um digest que uma API quer em Base64, use o Hex para Base64; o Base64 para hex faz o caminho inverso.

Base16 no código

import base64
base64.b16encode(b"Hello").decode()          # '48656C6C6F'
base64.b16decode("48656c6c6f", casefold=True)  # b'Hello'
printf 'Hello' | basenc --base16      # 48656C6C6F
echo 48656C6C6F | basenc --base16 -d  # Hello

O basenc faz parte do GNU coreutils 8.31 e posteriores. No Node.js, Buffer.from("Hello").toString("hex").toUpperCase() dá o mesmo resultado. As páginas de Python e Bash tratam o lado do Base64 desses módulos.

Perguntas frequentes

Base16 é o mesmo que hexadecimal?

Sim, para bytes. Base16 é o nome que a RFC 4648 dá à codificação hex: cada byte vira dois caracteres de 0123456789ABCDEF. A RFC especifica maiúsculas; o hex do dia a dia costuma ser em minúsculas.

Quanto o Base16 é maior que os dados originais?

Exatamente o dobro, um acréscimo de 100%. O Base32 acrescenta 60% e o Base64 cerca de 33%, então o Base16 é a menos compacta das codificações da RFC 4648 e a mais fácil de ler.

Por que o b16decode do Python rejeita minha string?

O base64.b16decode só aceita maiúsculas por padrão. Passe casefold=True para entrada em minúsculas, ou use bytes.fromhex(), que aceita as duas caixas e espaços.