Pular para o conteúdo

Conversor de Base: Decimal, Hex, Base32, Base64

Converta números entre decimal e Base16 (hex), Base32 e Base64 em ambos os sentidos, com detecção automática da base. Codifique ou decodifique um valor.

Conversor Bidirecional de Base

Converta entre números decimais e codificações de base padrão (Base16/Hex, Base32, Base64). Digite um valor em qualquer campo para converter.

Digite um número inteiro positivo (máximo: 9.007.199.254.740.991)

Digite um valor codificado em Base16, Base32 ou Base64

Sobre Codificações de Base

Base16 (Hexadecimal): Usa caracteres 0-9 e A-F. Cada caractere representa 4 bits. Comumente usado para códigos de cor e endereços de memória.
Base32: Usa caracteres A-Z e 2-7. Cada caractere representa 5 bits. Não diferencia maiúsculas de minúsculas e é legível por humanos.
Base64: Usa caracteres A-Z, a-z, 0-9, + e /. Cada caractere representa 6 bits. Comumente usado para codificar dados binários em texto.
Limite de Inteiro Seguro: JavaScript pode representar com segurança inteiros até 9.007.199.254.740.991 (2^53 - 1) sem perda de precisão.
Calculadora de carregamento...
📚

Documentação

Conversor bidirecional de bases

Um conversor de bases muda a forma como um número é escrito, sem mudar o número em si. Esta ferramenta converte um número decimal para Base16 (hexadecimal), Base32 ou Base64 e converte um valor codificado de volta para decimal. Ela também detecta qual das três codificações foi usada em um valor colado.

O que é a base de um número

Uma base numérica, também chamada de radix, é a quantidade de símbolos diferentes que um sistema numérico usa para um único algarismo. O sistema decimal é de base 10 e usa os algarismos de 0 a 9. Os computadores costumam armazenar números em outras bases porque essas bases representam o mesmo valor com menos caracteres ou porque o conjunto de caracteres é seguro para envio por sistemas que aceitam apenas texto, como e-mail ou uma URL.

Esta ferramenta trabalha com três dessas bases:

  • Base16 (hexadecimal). Usa os 16 símbolos 0–9 e A–F. Cada caractere armazena 4 bits. É comum em códigos de cores, endereços de memória e valores de hash.
  • Base32. Usa os 32 símbolos A–Z e 2–7, definidos pelo padrão da internet RFC 4648. Cada caractere armazena 5 bits. Ela evita letras e números visualmente semelhantes, como 0 e O, o que facilita a leitura em voz alta ou a digitação manual.
  • Base64. Usa 64 símbolos: A–Z, a–z, 0–9, + e /, também definidos pela RFC 4648. Cada caractere armazena 6 bits. É a forma padrão de incorporar dados binários a texto, como em um anexo de e-mail ou em um campo JSON.

Como converter um número decimal para Base16, Base32 ou Base64

Primeiro, a ferramenta divide o número decimal em bytes, grupos de 8 bits escritos na ordem big-endian (com o byte mais significativo primeiro). Em seguida, lê esses bits em grupos cujo tamanho corresponde à base de destino: 4 bits por vez para Base16, 5 bits por vez para Base32 ou 6 bits por vez para Base64. Cada grupo de bits é consultado na tabela de símbolos dessa base para produzir um caractere de saída.

Como Base32 e Base64 leem os bits em grupos de 5 ou 6, o último grupo de um número muitas vezes não termina no limite de um byte de 8 bits. A ferramenta preenche os bits restantes com zeros e, para Base32 e Base64, adiciona caracteres = ao final, para que o comprimento da saída seja sempre múltiplo de 8 caracteres (Base32) ou 4 caracteres (Base64).

Base16 sempre usa um número inteiro de pares de 2 caracteres, um par por byte. Um valor que exigiria um número ímpar de algarismos hexadecimais recebe um zero à esquerda, de modo que a cadeia sempre represente um número inteiro de bytes.

Fórmula e exemplo de Base16

Cada byte se torna exatamente dois algarismos hexadecimais, equivalentes a 16 vezes o primeiro algarismo mais o segundo:

v=a×16+bv = a \times 16 + b

em que v é o valor do byte, a é o primeiro algarismo hexadecimal e b é o segundo.

Exemplo: 255 em decimal. 255 cabe em um byte. 255 ÷ 16 = 15, resto 15, e 15 é escrito como F; portanto, 255 se torna FF. É por isso que o código de cor #FFFFFF é branco: são três bytes, cada um com seu valor máximo.

Exemplo: 1000 em decimal. 1000 precisa de dois bytes: 1000 = 3 × 256 + 232. O primeiro byte, 3, torna-se 03. O segundo byte, 232, é 14 × 16 + 8, que se torna E8. Juntos, 1000 em Base16 é 03E8, não 3E8 — a saída hexadecimal sempre é preenchida para formar bytes inteiros, portanto um valor menor que 16 no byte mais significativo ainda recebe um zero à esquerda.

Exemplos de Base32 e Base64

Usando os mesmos dois números acima:

DecimalBase16Base32Base64
255FF74======/w==
100003E8APUA====A+g=

Como converter um valor codificado de volta para decimal

Cole uma cadeia Base16, Base32 ou Base64 no campo codificado e selecione essa base na lista suspensa ao lado. A ferramenta verifica os caracteres em relação ao alfabeto da base, desfaz as etapas acima e exibe o valor decimal. Decodificar FF como Base16 resulta em 255.

A ferramenta também indica qual base um valor colado aparenta usar. Essa indicação serve apenas como dica. A lista suspensa continua determinando como o valor será lido, porque o alfabeto da Base16 faz parte do alfabeto da Base32, e uma cadeia curta como ABCD é válida nas duas.

A entrada em Base16 pode misturar maiúsculas e minúsculas; a ferramenta trata ff e FF da mesma forma. Um número ímpar de algarismos hexadecimais é lido pelo valor posicional, considerando-se um zero à esquerda; assim, 1F4 e 01F4 produzem 500. A entrada em Base32 deve ser digitada em maiúsculas: o decodificador da ferramenta não aceita letras minúsculas em Base32 e exibirá um erro se encontrá-las. A Base64 trata letras maiúsculas e minúsculas como símbolos diferentes, conforme exigido pelo formato, portanto as maiúsculas e minúsculas devem ser digitadas exatamente como mostradas.

Algumas cadeias nunca poderiam ser produzidas por um codificador, e a ferramenta as rejeita em vez de tentar adivinhar. A RFC 4648 organiza a Base64 em grupos de 4 caracteres e a Base32 em grupos de 8. Ignorando qualquer preenchimento =, uma cadeia Base64 com 1 caractere além de um múltiplo de 4, ou uma cadeia Base32 com 1, 3 ou 6 caracteres além de um múltiplo de 8, não contém um byte completo. Essa entrada produz um erro, não um número.

Limites de intervalo

O maior número aceito pela ferramenta é 9,007,199,254,740,991, igual a 2^53 − 1. Esse é o maior número inteiro que o mecanismo JavaScript de um navegador pode representar exatamente. Acima desse limite, alguns inteiros já não podem ser armazenados com precisão; por isso, a ferramenta exibe um erro em vez de retornar silenciosamente um algarismo incorreto. Zero e qualquer número inteiro até esse limite são aceitos; o número não precisa ser positivo, apenas não negativo.

O limite se aplica nas duas direções. Uma cadeia codificada que represente um número maior, como o valor Base16 20000000000000 (que é 2^53), é rejeitada em vez de ser arredondada. Frações também são rejeitadas: as codificações descrevem bytes inteiros, portanto 1.5 produz um erro, não um resultado arredondado.

Onde cada codificação é usada

  • Base16 aparece em valores de cor de CSS e HTML, endereços MAC e IPv6 e valores de hash usados para verificar se um arquivo não foi alterado.
  • Base32 aparece em chaves de configuração da autenticação de dois fatores, em alguns sistemas de compartilhamento de arquivos e em outros identificadores destinados à leitura em voz alta ou à digitação manual.
  • Base64 aparece em URIs data:, anexos de e-mail e tokens da web, como JWTs, sempre que dados binários precisam passar por um sistema criado para texto.

Converter entre essas codificações nunca altera o número subjacente. Apenas muda quantos caracteres são necessários para escrevê-lo e quais sistemas podem transportar esse texto com segurança.

Dúvidas frequentes

Qual é a diferença entre Base16, Base32 e Base64? Elas diferem na quantidade de símbolos que cada caractere pode representar: 16, 32 ou 64. Mais símbolos por caractere significam uma cadeia codificada mais curta para o mesmo número, ao custo de um alfabeto maior para leitura.

Por que 1000 é codificado como 03E8, em vez de 3E8, em Base16? A saída hexadecimal é preenchida para formar um número inteiro de bytes, com dois algarismos hexadecimais por byte. 1000 precisa de dois bytes, portanto o resultado sempre tem quatro algarismos hexadecimais, mesmo que o algarismo inicial seja zero.

A Base32 não diferencia maiúsculas de minúsculas? O alfabeto da Base32 é definido com letras maiúsculas. O decodificador desta ferramenta aceita apenas entradas Base32 em maiúsculas; letras minúsculas produzirão um erro.

Qual é o maior número que o conversor consegue processar? 9,007,199,254,740,991, que é 2^53 − 1. Esse é o limite da precisão exata de números inteiros em JavaScript, a linguagem em que a ferramenta é executada.

Posso converter um número negativo? Não. A ferramenta aceita apenas números inteiros iguais ou maiores que zero.

Por que a ferramenta rejeita algumas cadeias que parecem Base64 válidas? A Base64 é escrita em grupos de 4 caracteres, portanto um valor cujo comprimento seja 1 maior que um múltiplo de 4 não codifica um byte completo. Nenhum codificador pode produzi-lo, então a ferramenta exibe um erro em vez de retornar um número.

A conversão de um número entre bases altera seu valor? Não. Ela altera apenas a forma escrita. 255, FF, 74====== e /w== representam exatamente o mesmo número.