Codificador e decodificador Base91

Converta texto, bytes em hex ou arquivos em basE91 e vice-versa. O basE91 compacta dados binários em 91 caracteres ASCII imprimíveis e gera uma saída mais curta que o Base64 ou o Base85.

Funciona inteiramente no seu navegador. Nada é enviado.

Como usar

  1. Escolha Codificar para transformar texto ou bytes em basE91, ou Decodificar para transformar basE91 de volta em dados.
  2. Digite ou cole a entrada, ou abra um arquivo. Mude a entrada para Hex no caso de bytes brutos.
  3. O resultado é atualizado enquanto você digita. Ao decodificar, escolha a saída Texto ou Hex.
  4. 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çãoCaracteresTamanho da saída
Hex162 × entrada
Base5858cerca de 1,37 × entrada
Base64641,33 × entrada
Base85 / Ascii85851,25 × entrada
basE9191cerca 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 base91 para Python.

Especificação

Alfabeto91 caracteres ASCII imprimíveis
Tamanho da saídaCerca de 123%
PreenchimentoNenhum
PadrãobasE91 (Joachim Henke)
Diferencia maiúsculas e minúsculasSim

Exemplos

Entrada (UTF-8)Saída
Hello, World!>OwJh>}AQ;r@@Y?F
Base64.isxD7gXm^?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?
As letras 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.