Text in Oktal und Oktal in Text umwandeln

Schreiben Sie jedes Byte Ihres Textes als dreistellige Oktalzahl oder wandeln Sie eine Liste oktaler Bytewerte wieder in lesbaren Text um. Funktioniert mit UTF-8 und vielen älteren Zeichensätzen.

Läuft vollständig in Ihrem Browser. Es wird nichts hochgeladen.

Anleitung

  1. Wählen Sie „Kodieren“, um Text in Oktalzahlen umzuwandeln, oder „Dekodieren“, um Oktalwerte wieder in Text umzuwandeln.
  2. Geben Sie die Eingabe ein, fügen Sie sie ein oder klicken Sie auf „Datei öffnen“, um die Bytes einer Datei umzuwandeln.
  3. Wählen Sie ein „Trennzeichen“ für die Ausgabe: „Leerzeichen“, „Ohne“, „Komma“ oder „Neue Zeile“.
  4. Kopieren Sie das Ergebnis oder laden Sie es als Datei herunter.

Was ist Oktal?

Das Oktalsystem, auch Base8 genannt, schreibt Zahlen mit den Ziffern 0 bis 7. Jede Oktalziffer steht für genau drei Bit. Deshalb war Oktal auf frühen Computern beliebt, deren Wortbreite ein Vielfaches von drei war, etwa bei der 12-Bit-PDP-8 und der 36-Bit-PDP-10. Heute begegnet es einem vor allem noch in Escape-Sequenzen und bei Unix-Dateiberechtigungen.

Ein Byte enthält einen Wert von 0 bis 255, oktal also 0 bis 377. Dieser Konverter schreibt jedes Byte der Eingabe mit genau drei Oktalziffern und führenden Nullen. So sind alle Gruppen gleich breit und lassen sich sogar ohne Trennzeichen aneinanderreihen. Text wird zunächst mit der gewählten Zeichenkodierung in Bytes umgewandelt: ein Byte pro Zeichen bei reinem ASCII, in UTF-8 zwei bis vier Bytes pro Zeichen für andere Schriften.

Oktale Escape-Sequenzen

In C, C++, Python, Perl und mit dem printf der Shell können Sie ein Byte als Backslash mit bis zu drei folgenden Oktalziffern schreiben: \101 ist der Buchstabe A und \012 ein Zeilenvorschub.

Dieses Tool gibt reine Ziffern ohne Backslashes aus. Um einen String mit Escape-Sequenzen zu erzeugen, nehmen Sie die durch Leerzeichen getrennte Ausgabe, ersetzen jedes Leerzeichen durch einen Backslash und stellen der ersten Gruppe einen weiteren voran. Um Escape-Sequenzen zu dekodieren, gehen Sie umgekehrt vor und ersetzen die Backslashes durch Leerzeichen, denn der Decoder akzeptiert nur Ziffern und Trennzeichen.

Dateiberechtigungen wie 755 sind ebenfalls oktal, aber es handelt sich um Zahlen, nicht um Text. Um eine solche Zahl ins Binär- oder Dezimalsystem umzurechnen, verwenden Sie den Zahlensystem-Konverter.

Oktal im Programmcode

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

Spezifikation

Alphabet0-7
Ausgabegröße3 Ziffern pro Byte (300 %)
AuffüllungKeine
StandardOktales Stellenwertsystem
Groß-/Kleinschreibung relevantNein

Beispiele

Eingabe (UTF-8)Ausgabe
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

Häufig gestellte Fragen

Warum hat jedes Byte drei Oktalziffern?

Der größte Bytewert, 255, lautet oktal 377, daher reichen drei Ziffern immer aus. Werden kleinere Werte mit führenden Nullen aufgefüllt, ist jede Gruppe gleich breit. Nur so lässt sich eine Zeichenfolge ohne Trennzeichen wieder in Bytes zerlegen.

Wie dekodiere ich Oktalzahlen ohne Leerzeichen?

Fügen Sie die Ziffern als durchgehende Zeichenfolge ein. Der Decoder teilt sie in Dreiergruppen auf, die Länge muss also ein Vielfaches von 3 sein. Haben einige Werte weniger als drei Ziffern, trennen Sie sie stattdessen durch Leerzeichen, Kommas oder Zeilenumbrüche.

Warum wird ein Wert wie 400 abgelehnt?

Oktal 400 entspricht 256 und passt nicht in ein Byte. Gültige Bytewerte reichen von 0 bis 377, und der Decoder meldet die Position jeder Gruppe außerhalb dieses Bereichs. Die Ziffern 8 und 9 sind überhaupt keine gültigen Oktalziffern.

Kann ich Oktalwerte für einen anderen Zeichensatz erhalten?

Ja. Wählen Sie ihn unter „Zeichenkodierung“, zum Beispiel Windows-1252 oder ISO-8859-1 für ein Byte pro westeuropäischem Zeichen oder GBK bzw. Shift_JIS für chinesischen und japanischen Text.