UTILS.
100% no navegador
🔢

Codificar e Decodificar Base62

Converta inteiros ou strings de bytes de e para Base62 compacto e seguro para URL (0-9A-Za-z), com suporte a BigInt e uma variante de alfabeto GMP, tudo no navegador.

— a saída aparece aqui —

Sobre esta ferramenta

A ferramenta Base62 codifica números e strings de bytes no compacto alfabeto de 62 símbolos 0-9A-Za-z e os decodifica de volta. O Base62 é popular para IDs curtos, slugs de URL e links encurtados porque permanece seguro para URL sem os caracteres +, / ou = que o Base64 usa. Toda a conversão roda localmente no seu navegador com o BigInt do JavaScript, então valores arbitrariamente grandes são exatos e nada é enviado.

O modo inteiro trata a entrada como um inteiro de precisão arbitrária (decimal, ou hex com prefixo 0x): a codificação divide repetidamente por 62 e adiciona alphabet[remainder] ao início, e a decodificação calcula Σ alphabet.indexOf(ch)·62^position. O modo bytes trata os bytes de entrada (texto UTF-8 ou hex) como um único bignum big-endian e aplica a mesma conversão base-62, mas também preserva bytes zero à esquerda no estilo Base58 do Bitcoin: cada byte 0x00 à esquerda se torna um caractere '0' à esquerda, de modo que as conversões de ida e volta sejam sem perdas.

O alfabeto padrão ordena dígitos, depois maiúsculas, depois minúsculas (0-9A-Za-z). Algumas bibliotecas — notavelmente as construídas sobre GMP — ordenam dígitos, minúsculas, depois maiúsculas (0-9a-zA-Z), o que produz uma saída diferente para o mesmo valor; a alternância de alfabeto permite corresponder ao que o seu sistema usa. Escolha a direção, o modo inteiro ou bytes, o formato de entrada para bytes e a variante de alfabeto.

Perguntas frequentes

Qual é a diferença entre o modo inteiro e o modo bytes?
O modo inteiro converte um único número de precisão arbitrária (decimal ou hex 0x) em uma string Base62 e de volta em um inteiro decimal. O modo bytes converte uma sequência de bytes (de texto UTF-8 ou hex) como um bignum big-endian, e preserva bytes zero à esquerda como caracteres alfabeto-zero à esquerda, de modo que dados binários façam a ida e volta exatamente.
Por que existem dois alfabetos?
O alfabeto padrão é 0-9A-Za-z (maiúsculas antes de minúsculas). Bibliotecas baseadas em GMP usam 0-9a-zA-Z (minúsculas antes de maiúsculas). O mesmo valor é codificado de forma diferente em cada um, então a alternância permite interoperar com a ordenação que as suas outras ferramentas esperam.
Que tamanho de número ele consegue tratar?
Qualquer tamanho. A ferramenta usa o BigInt do JavaScript, então não há limite de precisão de 2^53 — você pode codificar e decodificar inteiros e strings de bytes de comprimento arbitrário exatamente, o que é essencial para hashes, UUIDs e identificadores longos.
Como os zeros à esquerda são tratados no modo bytes?
Cada byte 0x00 à esquerda é codificado como um caractere alfabeto-zero à esquerda (como o '1' à esquerda do Base58). Na decodificação, cada caractere alfabeto-zero à esquerda restaura um byte 0x00, então codificar e depois decodificar retorna a sequência de bytes original exata.

Mais ferramentas