Como usar
- Escolha Codificar para gerar um bloco xxencode, ou Decodificar para transformá-lo de volta em dados.
- 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.
- Digite ou cole a entrada, ou abra um arquivo. O resultado é atualizado enquanto você digita.
- 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
| Uuencode | Xxencode | |
|---|---|---|
| Caracteres | ASCII 32 a 95, acento grave para zero | + - 0-9 A-Z a-z |
| Uma linha completa de 45 bytes começa com | M | h |
| Última linha antes de end | ` | + |
| Seguro em gateways EBCDIC | Não | Sim |
Especificação
| Alfabeto | + - 0-9 A-Z a-z |
|---|---|
| Tamanho da saída | Cerca de 137%, incluindo os prefixos de linha |
| Preenchimento | Linhas de até 45 bytes |
| Padrão | xxencode |
| Diferencia maiúsculas e minúsculas | Sim |
Exemplos
| Entrada (UTF-8) | Saída |
|---|---|
Hello, World! | begin 644 data.bin
BG4JgP4wg63RjQalY6E++
+
end |
Base64.is | begin 644 data.bin
7Ea3nNHMo9aZn
+
end |
你好 | begin 644 data.bin
4t9qUtOKx
+
end |
Perguntas frequentes
Como diferenciar uuencode de xxencode?
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?
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.