Xxencode e xxdecode

Codifique texto, bytes em hex ou arquivos com xxencode, ou decodifique blocos xxencode de volta aos dados originais. O alfabeto usa apenas letras, dígitos, sinal de mais e sinal de menos.

Funciona inteiramente no seu navegador. Nada é enviado.

Como usar

  1. Escolha Codificar para gerar um bloco xxencode, ou Decodificar para transformá-lo de volta em dados.
  2. Deixe as Linhas begin / end ativadas e defina um Nome do arquivo para obter um bloco completo, ou desative-as para obter apenas as linhas de dados.
  3. Digite ou cole a entrada, ou abra um arquivo. O resultado é atualizado enquanto você digita.
  4. Copie o resultado ou baixe-o. Ao decodificar, escolha a saída Hex ou baixe o arquivo se os dados não forem texto.

O que é xxencode?

O xxencode mantém a estrutura do uuencode e muda apenas os caracteres. Cada 3 bytes continuam virando quatro valores de 6 bits, as linhas de dados continuam guardando até 45 bytes depois de um caractere de comprimento, e o bloco continua entre uma linha begin 644 name e uma linha end.

Os 64 valores são mapeados para +, -, os dígitos 0-9, as letras maiúsculas A-Z e as letras minúsculas a-z, nessa ordem. O caractere de comprimento usa a mesma tabela, então uma linha completa de 45 bytes começa com h, e a linha vazia antes de end é um único +. Como o layout é idêntico, a saída tem o mesmo tamanho que a do uuencode: cerca de 38% maior que a entrada, contando os caracteres de comprimento e as quebras de linha.

Por que o xxencode foi criado

A saída do uuencode é cheia de pontuação, como [, ], \, ^ e !. Os mainframes IBM usam EBCDIC em vez de ASCII, e esses caracteres ficam em posições diferentes conforme a página de código EBCDIC. Quando o e-mail passava por gateways entre redes ASCII e EBCDIC, esses caracteres podiam ser convertidos incorretamente, e o arquivo era corrompido.

Letras, dígitos, sinal de mais e sinal de menos são iguais em todas as páginas de código EBCDIC, então o texto em xxencode é convertido sem problemas nas duas direções. Mais tarde, o MIME atingiu o mesmo objetivo: o Base64 também usa apenas letras, dígitos e alguns símbolos idênticos em ASCII e EBCDIC. O xxencode nunca se tornou tão comum quanto o uuencode, e o Base64 acabou substituindo os dois.

Uuencode e xxencode lado a lado

UuencodeXxencode
CaracteresASCII 32 a 95, acento grave para zero+ - 0-9 A-Z a-z
Uma linha completa de 45 bytes começa comMh
Última linha antes de end`+
Seguro em gateways EBCDICNãoSim

Especificação

Alfabeto+ - 0-9 A-Z a-z
Tamanho da saídaCerca de 137%, incluindo os prefixos de linha
PreenchimentoLinhas de até 45 bytes
Padrãoxxencode
Diferencia maiúsculas e minúsculasSim

Exemplos

Entrada (UTF-8)Saída
Hello, World!begin 644 data.bin BG4JgP4wg63RjQalY6E++ + end
Base64.isbegin 644 data.bin 7Ea3nNHMo9aZn + end
你好begin 644 data.bin 4t9qUtOKx + end

Perguntas frequentes

Como diferenciar uuencode de xxencode?
Observe as linhas de dados. Linhas em xxencode contêm apenas letras, dígitos, mais e menos, e as linhas completas começam com h. Linhas em uuencode contêm pontuação, e as linhas completas começam com M. Se a decodificação aqui falhar com um caractere inválido, experimente a página uuencode.
A ferramenta escreve as linhas begin e end?
Sim. Por padrão, ela escreve begin 644 com o nome de arquivo que você informar, além das linhas de fechamento. Desative a opção se você só precisar das linhas de dados codificadas.
Posso decodificar um bloco sem a linha begin?

Sim. Sem uma linha begin, todas as linhas não vazias são decodificadas como dados. Se ela existir, a decodificação começa logo depois e para na linha end, então o texto ao redor é ignorado.

O xxencode ainda é usado?
Raramente. Ele aparece principalmente em acervos antigos de e-mail e de news. Para dados novos, o Base64 é suportado em quase todo lugar e é igualmente seguro para canais que só aceitam texto.