Converter van tekst naar octaal en terug

Schrijf elke byte van je tekst als een octaal getal van drie cijfers, of zet een lijst met octale bytewaarden terug om naar leesbare tekst. Werkt met UTF-8 en veel oudere tekensets.

Werkt volledig in je browser. Er wordt niets geüpload.

Zo gebruik je het

  1. Kies Coderen om tekst om te zetten naar octaal, of Decoderen om octale waarden terug te zetten naar tekst.
  2. Typ of plak de invoer, of open een bestand om de bytes ervan om te zetten.
  3. Kies een Scheidingsteken voor de uitvoer: Spatie, Geen, Komma of Nieuwe regel.
  4. Kopieer het resultaat of download het als bestand.

Wat is octaal?

Het octale stelsel, of Base8, schrijft getallen met de cijfers 0 tot en met 7. Elk octaal cijfer staat voor precies drie bits. Daardoor was octaal populair op vroege computers met een woordlengte die een veelvoud van drie was, zoals de 12-bits PDP-8 en de 36-bits PDP-10. Tegenwoordig leeft het vooral voort in escapereeksen en in Unix-bestandsrechten.

Een byte bevat een waarde van 0 tot 255, in octaal 0 tot 377. Deze converter schrijft elke byte van de invoer als precies drie octale cijfers met voorloopnullen, zodat alle groepen even breed zijn en zelfs zonder scheidingsteken aan elkaar kunnen worden gezet. Tekst wordt eerst met de gekozen tekencodering omgezet naar bytes: één byte per teken voor gewone ASCII, twee tot vier bytes per teken voor andere schriften in UTF-8.

Octale escapereeksen

In C, C++, Python, Perl en het shellcommando printf kun je een byte schrijven als een backslash gevolgd door maximaal drie octale cijfers: \101 is de letter A en \012 is een line feed (nieuwe regel).

Deze tool geeft gewone cijfers zonder backslashes. Om een string met escapereeksen te maken, neem je de uitvoer met spaties als scheidingsteken, vervang je elke spatie door een backslash en zet je er ook een vóór de eerste groep. Om escapereeksen te decoderen, doe je het omgekeerde en vervang je de backslashes door spaties, want de decoder accepteert alleen cijfers en scheidingstekens.

Bestandsrechten zoals 755 zijn ook octaal, maar dat zijn getallen, geen tekst. Wil je zo'n getal omzetten naar binair of decimaal, gebruik dan de talstelselconverter.

Octaal in code

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

Specificatie

Alfabet0-7
Uitvoergrootte3 cijfers per byte (300%)
OpvullingGeen
StandaardOctaal positiestelsel
HoofdlettergevoeligNee

Voorbeelden

Invoer (UTF-8)Uitvoer
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

Veelgestelde vragen

Waarom heeft elke byte drie octale cijfers?

De grootste bytewaarde, 255, is 377 in octaal, dus drie cijfers zijn altijd genoeg. Door kleinere waarden met voorloopnullen aan te vullen, blijft elke groep even breed. Daardoor kan een string zonder scheidingstekens weer in bytes worden opgesplitst.

Hoe decodeer ik octaal zonder spaties?

Plak de cijfers als één doorlopende string. De decoder splitst die in groepen van drie, dus de lengte moet een veelvoud van 3 zijn. Hebben sommige waarden minder dan drie cijfers, scheid ze dan met spaties, komma's of regeleinden.

Waarom wordt een waarde als 400 geweigerd?

Octaal 400 is 256, en dat past niet in een byte. Geldige bytewaarden lopen van 0 tot 377, en de decoder meldt de positie van elke groep buiten dat bereik. De cijfers 8 en 9 zijn helemaal geen geldige octale cijfers.

Kan ik octale waarden krijgen voor een andere tekenset?

Ja. Kies die in het menu Tekencodering, bijvoorbeeld Windows-1252 of ISO-8859-1 voor één byte per West-Europees teken, of GBK of Shift_JIS voor Chinese en Japanse tekst.