Enviar um arquivo
  1. base64hub
  2. Outras bases
  3. Xxencode

Xxencode e xxdecode online

Digite um texto para obter a saída em xxencode, a variante do uuencode que usa só letras, dígitos, + e -. Inverta a direção para fazer xxdecode de um bloco, com o nome do arquivo tirado da linha begin.

Grátis sem cadastro, sem limites Local nada é enviado 64 caracteres seguros + - 0-9 A-Z a-z Atualizado 27 de out. de 2026
Entrada 0Bytes 0 BSaída 0

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como fazer xxencode e xxdecode

Para codificar:

  1. Digite ou cole o texto em Entrada · Texto. O bloco xxencode aparece em Saída · xxencode.
  2. Defina o Nome do arquivo abaixo da saída com o nome que o destinatário deve receber; o padrão é data.bin.
  3. Desmarque linhas begin/end se você quer só as linhas de dados.

Para decodificar:

  1. Clique em xxencode → Texto no seletor de direção.
  2. Cole o bloco. Qualquer texto antes da linha begin, como um cabeçalho de e-mail ou uma nota, é ignorado.
  3. Leia o resultado, ajuste Para em Hex para conteúdo binário ou clique em Salvar bytes para baixá-lo com o nome da linha begin.

Por que o xxencode existe

O alfabeto do uuencode inclui todos os caracteres do espaço (ou da crase) até o _, o que inclui [, ], ^, \ e !. Eles causavam problemas em gateways de e-mail entre sistemas ASCII e EBCDIC, como os mainframes IBM e a rede BITNET, porque esses caracteres não tinham um equivalente único em EBCDIC. Os arquivos chegavam com caracteres trocados e decodificavam em lixo.

O xxencode mantém a estrutura do uuencode e troca o alfabeto por 64 caracteres que se convertem de forma confiável: +, -, 0–9, A–Z e a–z. O valor 0 é +, o valor 1 é -, os dígitos começam no valor 2 e o z minúsculo é 63.

Uuencode e xxencode lado a lado

As mesmas entradas nos dois formatos, com o nome de arquivo hello.txt:

EntradaLinha de dados uuencodeLinha de dados xxencode
Cat#0V%T1Eq3o
Hello, world,2&5L;&\L('=O<FQDAG4JgP4wg65RjQalY
4 bytes zero$````````2++++++++

O primeiro caractere de cada linha é a quantidade de bytes no alfabeto do próprio formato: 3 é # no uuencode e 1 no xxencode, 12 é , e A, 4 é $ e 2. Uma linha cheia de 45 bytes começa com M no uuencode e h no xxencode.

Um arquivo xxencode inteiro tem esta cara, aqui para The quick brown fox jumps over the lazy dog. 0123456789 salvo como fox.txt:

begin 644 fox.txt
hJ4VZ653pOKBf647mPrRi64NjS0-eRKpkQm-jRaJm65FcNG-gMLdt64FjNmsU
8A12mAnEpBXQsCE++
+
end

O tamanho é igual ao do uuencode: 4 caracteres para cada 3 bytes, mais um caractere de comprimento e uma quebra de linha por linha, cerca de 38% maior que a entrada.

Xxencode em Python

O Python não tem xxencode, mas o binascii.b2a_uu produz os mesmos valores de 6 bits, então traduzir a saída dele do alfabeto uuencode para o alfabeto xxencode gera linhas xxencode corretas, com o caractere de comprimento incluído:

import binascii

UU = "`" + "".join(chr(c) for c in range(33, 96))
XX = "+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
TO_XX = str.maketrans(UU, XX)

def xxencode_line(chunk: bytes) -> str:
    return binascii.b2a_uu(chunk, backtick=True).decode().translate(TO_XX)

xxencode_line(b"Cat")    # '1Eq3o\n'

Passe 45 bytes por vez e depois acrescente begin 644 name no topo e + e end no final. Para decodificar, traduza com str.maketrans(XX, UU) e chame binascii.a2b_uu em cada linha. Veja a página de Python para mais sobre bytes e codificações.

Problemas comuns

  • Saída sem sentido de um arquivo que deveria estar em xxencode. Confira o primeiro caractere das linhas cheias. Se for M, o arquivo está em uuencode; use a ferramenta de uuencode.
  • Uma linha decodifica com o comprimento errado. O caractere de comprimento foi alterado ou perdido, muitas vezes por um cliente de e-mail que quebrou as linhas de novo. O xxencode não consegue recuperar uma linha que foi dividida ou unida.
  • O arquivo decodificado sai cortado. O bloco foi publicado em várias partes. Junte-as em ordem, com um único begin e um único end, e decodifique o resultado.

Perguntas frequentes

Qual é a diferença entre xxencode e uuencode?

Só o alfabeto. Os dois escrevem 3 bytes como 4 caracteres, em linhas de até 45 bytes com um caractere de comprimento, entre begin e end. O uuencode usa a faixa ASCII da crase e do ! até o _; o xxencode usa +, -, dígitos e letras.

Como saber se um arquivo está em xxencode ou em uuencode?

Olhe o primeiro caractere das linhas de dados cheias: M significa uuencode e h significa xxencode, já que os dois representam 45 bytes. Linhas cheias de pontuação como `, # ou % são uuencode.

Qual programa decodifica arquivos xxencode?

O UUDeview lida com os dois formatos; no Debian e no Ubuntu é o pacote uudeview. O uudecode do GNU sharutils lê uuencode e Base64, mas não xxencode.

Por que um arquivo xxencode termina com uma linha +?

+ é o caractere do xxencode para 0, então uma linha contendo só + é uma linha de dados de comprimento zero. Ela tem o mesmo papel da linha com uma única crase no uuencode, logo antes do end.