Codificador e decodificador Base36

Converta texto, bytes em hex ou arquivos para Base36, o alfabeto de dez dígitos e 26 letras, e decodifique strings Base36 de volta em bytes. A saída em maiúsculas é opcional.

Funciona inteiramente no seu navegador. Nada é enviado.

Como usar

  1. Escolha Codificar para transformar texto em Base36 ou Decodificar para transformar Base36 de volta em texto.
  2. Digite ou cole a entrada, ou abra um arquivo pequeno (até cerca de 20 KB).
  3. Ative Maiúsculas se você precisar de letras maiúsculas na saída.
  4. Copie o resultado ou baixe-o como arquivo.

O que é Base36?

O Base36 escreve dados com os dez dígitos e as 26 letras do alfabeto latino, 0-9 seguido de a-z. É o maior alfabeto que dá para montar com dígitos e letras ignorando a diferença entre maiúsculas e minúsculas, por isso as strings Base36 passam intactas por sistemas que alteram ou ignoram a caixa das letras. Cada caractere carrega cerca de 5,17 bits, o que deixa a saída com aproximadamente 1,55 vez o tamanho da entrada, um pouco mais curta que a do Base32.

Como 36 não é uma potência de dois, os bytes não podem simplesmente ser cortados em grupos de bits. Em vez disso, a ferramenta lê toda a entrada como um único número grande sem sinal e o converte para a base 36, o mesmo método usado pelo Base58. Um número perderia seus bytes zero iniciais, então cada um deles é escrito como um 0 inicial e restaurado na decodificação. Essa aritmética fica lenta com entradas grandes, por isso a ferramenta aceita até cerca de 20 KB.

Onde o Base36 é usado

  • IDs curtos. Encurtadores de URL, números de pedido e códigos de chamado costumam exibir um ID numérico do banco de dados em base 36. O Reddit, por exemplo, usa base 36 para os IDs de posts e comentários.
  • Lugares que ignoram a caixa das letras. Nomes DNS e alguns sistemas de arquivos não diferenciam maiúsculas de minúsculas. Por esse motivo, o IPFS usa uma forma Base36 de alguns identificadores nos endereços de gateway por subdomínio.
  • Números no código. A base 36 é a maior base que a maioria das linguagens de programação suporta nativamente na conversão de inteiros.

Se a caixa das letras for preservada e você quiser a string alfanumérica mais curta possível, o Base62 é mais compacto.

Números em Base36 no código

Esta página codifica bytes. Para converter um número inteiro, use as funções nativas da sua linguagem ou o conversor de bases numéricas:

// JavaScript
(1000000).toString(36)        // 'lfls'
parseInt('lfls', 36)          // 1000000
123456789012345678901234567890n.toString(36)   // BigInt para valores grandes

# Python
int('lfls', 36)               # 1000000
# não há função nativa para a direção inversa

parseInt perde precisão acima de Number.MAX_SAFE_INTEGER; para valores maiores, acumule os dígitos em um BigInt por conta própria.

Especificação

Alfabeto0-9 a-z
Tamanho da saídaCerca de 155% (conversão de número grande)
PreenchimentoNenhum
PadrãoSem padrão formal
Diferencia maiúsculas e minúsculasNão

Exemplos

Entrada (UTF-8)Saída
Hello, World!fg3h7vqw7een6jwwnzmp
Base64.is76f8bz4veeatf7
你好2h5exfqm65

Perguntas frequentes

O Base36 diferencia maiúsculas de minúsculas?

Não. A saída fica em minúsculas por padrão, e a opção Maiúsculas a muda para maiúsculas. O decodificador aceita qualquer uma das formas.

Por que outra ferramenta dá um resultado Base36 diferente?

O Base36 não tem um padrão formal. Algumas ferramentas codificam um número, outras codificam bytes, e elas tratam os bytes zero iniciais de formas diferentes. Esta ferramenta codifica os bytes da entrada como um único número grande e escreve cada byte zero inicial como um 0.

Existe limite de tamanho?
Sim, cerca de 20 KB, porque a conversão de números grandes demora mais à medida que a entrada cresce. Para arquivos e grandes volumes de dados, o Base32 ou o Base64 são mais adequados.
Como converter um número para Base36?
Use o conversor de bases numéricas, que mostra um valor decimal em Base36 e em outras bases. Esta página trata a entrada como texto ou bytes, então digitar 100 codifica os caracteres 1, 0 e 0, e não o número cem.