Como usar
- Escolha Codificar para transformar texto em Base36 ou Decodificar para transformar Base36 de volta em texto.
- Digite ou cole a entrada, ou abra um arquivo pequeno (até cerca de 20 KB).
- Ative Maiúsculas se você precisar de letras maiúsculas na saída.
- 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
| Alfabeto | 0-9 a-z |
|---|---|
| Tamanho da saída | Cerca de 155% (conversão de número grande) |
| Preenchimento | Nenhum |
| Padrão | Sem padrão formal |
| Diferencia maiúsculas e minúsculas | Não |
Exemplos
| Entrada (UTF-8) | Saída |
|---|---|
Hello, World! | fg3h7vqw7een6jwwnzmp |
Base64.is | 76f8bz4veeatf7 |
你好 | 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.