Convertitore da testo a ottale e da ottale a testo

Scrivi ogni byte del testo come numero ottale di tre cifre, oppure trasforma un elenco di valori ottali dei byte di nuovo in testo leggibile. Funziona con UTF-8 e con molti set di caratteri storici.

Funziona interamente nel tuo browser. Non viene caricato nulla.

Come si usa

  1. Scegli Codifica per convertire il testo in ottale, oppure Decodifica per riportare i valori ottali in testo.
  2. Digita o incolla l’input, oppure apri un file per convertirne i byte.
  3. Seleziona un separatore per l’output: Spazio, Nessuno, Virgola o Nuova riga.
  4. Copia il risultato o scaricalo come file.

Che cos’è l’ottale?

L’ottale, o Base8, scrive i numeri con le cifre da 0 a 7. Ogni cifra ottale rappresenta esattamente tre bit, e per questo l’ottale era diffuso sui primi computer con parole di lunghezza multipla di tre, come il PDP-8 a 12 bit e il PDP-10 a 36 bit. Oggi sopravvive soprattutto nelle sequenze di escape e nei permessi dei file Unix.

Un byte contiene un valore da 0 a 255, cioè da 0 a 377 in ottale. Questo convertitore scrive ogni byte dell’input con esattamente tre cifre ottali, inclusi gli zeri iniziali, così tutti i gruppi hanno la stessa larghezza e si possono perfino unire senza separatore. Il testo viene prima trasformato in byte con la codifica del testo selezionata: un byte per carattere per il semplice ASCII, da due a quattro byte per carattere per gli altri sistemi di scrittura in UTF-8.

Sequenze di escape ottali

C, C++, Python, Perl e il comando printf della shell permettono di scrivere un byte come una barra rovesciata seguita da un massimo di tre cifre ottali: \101 è la lettera A e \012 è un avanzamento di riga (line feed).

Questo strumento produce solo cifre, senza barre rovesciate. Per costruire una stringa con sequenze di escape, prendi l’output separato da spazi, sostituisci ogni spazio con una barra rovesciata e aggiungine una davanti al primo gruppo. Per decodificare le sequenze di escape fai il contrario e sostituisci le barre rovesciate con spazi, perché il decodificatore accetta solo cifre e separatori.

Anche i permessi dei file come 755 sono in ottale, ma sono numeri, non testo. Per convertire un numero di questo tipo in binario o in decimale, usa il convertitore di basi numeriche.

L’ottale nel codice

# 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'        # stampa Hi
printf 'Hi' | od -An -to1   # 110 151

Specifiche

Alfabeto0-7
Dimensione dell’output3 cifre per byte (300%)
PaddingNessuno
StandardNotazione ottale posizionale
Distingue maiuscole/minuscoleNo

Esempi

Input (UTF-8)Output
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

Domande frequenti

Perché ogni byte ha tre cifre ottali?

Il valore massimo di un byte, 255, in ottale è 377, quindi tre cifre bastano sempre. Completare i valori più piccoli con zeri iniziali mantiene tutti i gruppi della stessa larghezza, ed è questo che permette di suddividere di nuovo in byte una stringa senza separatori.

Come si decodifica l’ottale senza spazi?

Incolla le cifre come un’unica stringa continua. Il decodificatore la divide in gruppi di tre, quindi la lunghezza deve essere un multiplo di 3. Se alcuni valori hanno meno di tre cifre, separali invece con spazi, virgole o interruzioni di riga.

Perché un valore come 400 viene rifiutato?

Il valore ottale 400 corrisponde a 256, che non sta in un byte. I valori validi dei byte vanno da 0 a 377 e il decodificatore segnala la posizione di qualsiasi gruppo fuori da questo intervallo. Le cifre 8 e 9, poi, non sono affatto cifre ottali valide.

Posso ottenere i valori ottali per un altro set di caratteri?

Sì. Sceglilo nel menu Codifica del testo, per esempio Windows-1252 o ISO-8859-1 per avere un byte per ogni carattere dell’Europa occidentale, oppure GBK o Shift_JIS per i testi cinesi e giapponesi.