Anleitung
- Wählen Sie „Kodieren“, um Text in Oktalzahlen umzuwandeln, oder „Dekodieren“, um Oktalwerte wieder in Text umzuwandeln.
- Geben Sie die Eingabe ein, fügen Sie sie ein oder klicken Sie auf „Datei öffnen“, um die Bytes einer Datei umzuwandeln.
- Wählen Sie ein „Trennzeichen“ für die Ausgabe: „Leerzeichen“, „Ohne“, „Komma“ oder „Neue Zeile“.
- 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
| Alphabet | 0-7 |
|---|---|
| Ausgabegröße | 3 Ziffern pro Byte (300 %) |
| Auffüllung | Keine |
| Standard | Oktales Stellenwertsystem |
| Groß-/Kleinschreibung relevant | Nein |
Beispiele
| Eingabe (UTF-8) | Ausgabe |
|---|---|
Hello, World! | 110 145 154 154 157 054 040 127 157 162 154 144 041 |
Base64.is | 102 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.