Conversor de texto para octal e de octal para texto

Escreva cada byte do seu texto como um número octal de três dígitos ou transforme uma lista de valores de byte em octal de volta em texto legível. Funciona com UTF-8 e com vários conjuntos de caracteres legados.

Funciona inteiramente no seu navegador. Nada é enviado.

Como usar

  1. Escolha Codificar para converter texto em octal ou Decodificar para converter valores octais de volta em texto.
  2. Digite ou cole a entrada, ou abra um arquivo para converter os bytes dele.
  3. Selecione um separador para a saída: Espaço, Nenhum, Vírgula ou Nova linha.
  4. Copie o resultado ou baixe-o como arquivo.

O que é octal?

O octal, ou Base8, escreve números com os dígitos de 0 a 7. Cada dígito octal representa exatamente três bits, o que tornou o octal popular nos primeiros computadores cujo tamanho de palavra era múltiplo de três, como o PDP-8 de 12 bits e o PDP-10 de 36 bits. Hoje ele sobrevive principalmente em sequências de escape e nas permissões de arquivo do Unix.

Um byte guarda um valor de 0 a 255, que corresponde a 0 a 377 em octal. Este conversor escreve cada byte da entrada com exatamente três dígitos octais, com zeros à esquerda, para que todos os grupos tenham a mesma largura e possam até ser unidos sem separador. Primeiro o texto é transformado em bytes com a codificação de texto selecionada: um byte por caractere para ASCII puro e de dois a quatro bytes por caractere para outros sistemas de escrita em UTF-8.

Sequências de escape em octal

C, C++, Python, Perl e o printf do shell permitem escrever um byte como uma barra invertida seguida de até três dígitos octais: \101 é a letra A e \012 é uma quebra de linha (line feed).

Esta ferramenta gera apenas os dígitos, sem barras invertidas. Para montar uma string com escapes, use a saída separada por espaços, substitua cada espaço por uma barra invertida e acrescente uma antes do primeiro grupo. Para decodificar sequências de escape, faça o inverso e troque as barras invertidas por espaços, porque o decodificador aceita apenas dígitos e separadores.

Permissões de arquivo como 755 também são octais, mas são números, não texto. Para converter um número desses para binário ou decimal, use o conversor de bases numéricas.

Octal no código

# Python
' '.join(f'{b:03o}' for b in 'Hi'.encode())            # '110 151'
bytes(int(o, 8) for o in '110 151'.split()).decode()   # 'Hi'

# Shell
printf '\110\151\n'        # exibe Hi
printf 'Hi' | od -An -to1   # 110 151

Especificação

Alfabeto0-7
Tamanho da saída3 dígitos por byte (300%)
PreenchimentoNenhum
PadrãoOctal posicional
Diferencia maiúsculas e minúsculasNão

Exemplos

Entrada (UTF-8)Saída
Hello, World!110 145 154 154 157 054 040 127 157 162 154 144 041
Base64.is102 141 163 145 066 064 056 151 163
你好344 275 240 345 245 275

Perguntas frequentes

Por que cada byte tem três dígitos octais?

O maior valor de um byte, 255, é 377 em octal, então três dígitos sempre bastam. Completar os valores menores com zeros à esquerda mantém todos os grupos com a mesma largura, e é isso que permite dividir de volta em bytes uma string sem separadores.

Como decodificar octal sem espaços?

Cole os dígitos como uma única string contínua. O decodificador a divide em grupos de três, então o comprimento precisa ser múltiplo de 3. Se alguns valores tiverem menos de três dígitos, separe-os com espaços, vírgulas ou quebras de linha.

Por que um valor como 400 é rejeitado?

O octal 400 é 256, que não cabe em um byte. Os valores de byte válidos vão de 0 a 377, e o decodificador informa a posição de qualquer grupo fora desse intervalo. Os dígitos 8 e 9 nem sequer são dígitos octais válidos.

Posso obter valores octais para outro conjunto de caracteres?

Sim. Escolha-o no menu Codificação de texto, por exemplo Windows-1252 ou ISO-8859-1 para ter um byte por caractere em idiomas da Europa Ocidental, ou GBK ou Shift_JIS para textos em chinês e japonês.