Como usar
- Escolha Codificar para transformar texto ou bytes em basE91, ou Decodificar para transformar basE91 de volta em dados.
- Digite ou cole a entrada, ou abra um arquivo. Mude a entrada para Hex no caso de bytes brutos.
- O resultado é atualizado enquanto você digita. Ao decodificar, escolha a saída Texto ou Hex.
- Copie o resultado ou baixe-o como arquivo.
O que é basE91?
O basE91 é uma codificação de binário para texto criada por Joachim Henke. Ele usa 91 dos 95 caracteres ASCII imprimíveis: todos, exceto o espaço, o apóstrofo ', o hífen - e a barra invertida \.
Ele não trabalha com blocos fixos de bytes. O codificador acumula os bits da entrada em um buffer e pega 13 deles de cada vez. Se o valor de 13 bits for maior que 88, ele é escrito como dois caracteres. Se for 88 ou menos, um 14º bit também é pego, o que ainda cabe, porque dois caracteres na base 91 podem expressar 91 × 91 = 8281 valores diferentes. Assim, cada 13 ou 14 bits viram exatamente 2 caracteres.
O resultado é um acréscimo de no máximo cerca de 23%, que cai para cerca de 14% em dados com longas sequências de bytes zero. Dados aleatórios ou compactados ficam perto do limite superior.
Como o basE91 se compara a outras codificações
| Codificação | Caracteres | Tamanho da saída |
|---|---|---|
| Hex | 16 | 2 × entrada |
| Base58 | 58 | cerca de 1,37 × entrada |
| Base64 | 64 | 1,33 × entrada |
| Base85 / Ascii85 | 85 | 1,25 × entrada |
| basE91 | 91 | cerca de 1,14 a 1,23 × entrada |
Para comparar o comprimento real da saída com os seus próprios dados, digite-os em Todas as codificações.
Pontos de atenção
- Escape. O alfabeto contém as aspas duplas
", que precisam de escape em JSON e na maioria dos literais de string, e também<,>e&, que precisam de escape em HTML e XML. O basE91 não é seguro para URL. - Decodifique a string inteira. Como os bits atravessam os limites entre caracteres, um trecho cortado do meio de uma string basE91 não pode ser decodificado sozinho.
- Suporte. O basE91 não é um padrão da IETF. O autor publica implementações de referência em C e em outras linguagens, e existem ports para a maioria das plataformas, como o pacote
base91para Python.
Especificação
| Alfabeto | 91 caracteres ASCII imprimíveis |
|---|---|
| Tamanho da saída | Cerca de 123% |
| Preenchimento | Nenhum |
| Padrão | basE91 (Joachim Henke) |
| Diferencia maiúsculas e minúsculas | Sim |
Exemplos
| Entrada (UTF-8) | Saída |
|---|---|
Hello, World! | >OwJh>}AQ;r@@Y?F |
Base64.is | xD7gXm^?t#5 |
你好 | I_5k7aPE |
Perguntas frequentes
O basE91 é menor que o Base64?
Sim. O Base64 sempre acrescenta 33%, enquanto o basE91 acrescenta no máximo cerca de 23%, e menos em dados com muitos bytes zero. Em um arquivo de 1 MB, isso representa uma economia de aproximadamente 100 KB.
Quais caracteres o basE91 usa?
A-Z e a-z, os dígitos 0-9 e os símbolos !#$%&()*+,./:;<=>?@[]^_`{|}~". Espaço, apóstrofo, hífen e barra invertida não são usados.Por que se escreve basE91?
É assim que o autor grafa o nome. basE91 e Base91 se referem à mesma codificação, e esta página segue o algoritmo original.
Espaços em branco atrapalham a decodificação?
Não. Espaços e quebras de linha não fazem parte do alfabeto, então o decodificador desta página os ignora. Você pode colar diretamente um texto basE91 com quebras de linha.