Konvertera text till oktala tal och tillbaka

Skriv varje byte i texten som ett tresiffrigt oktalt tal, eller gör om en lista med oktala bytevärden till läsbar text igen. Fungerar med UTF-8 och många äldre teckenuppsättningar.

Körs helt i din webbläsare. Inget laddas upp.

Så använder du verktyget

  1. Välj Koda för att konvertera text till oktala tal, eller Avkoda för att konvertera oktala värden tillbaka till text.
  2. Skriv eller klistra in indatan, eller öppna en fil för att konvertera dess byte.
  3. Välj en avgränsare för utdatan: Mellanslag, Ingen, Kommatecken eller Ny rad.
  4. Kopiera resultatet eller ladda ned det som en fil.

Vad är det oktala talsystemet?

Det oktala talsystemet, eller Base8, skriver tal med siffrorna 0 till 7. Varje oktal siffra motsvarar exakt tre bitar, vilket gjorde systemet populärt på tidiga datorer vars ordlängd var en multipel av tre, som 12-bitars PDP-8 och 36-bitars PDP-10. I dag lever det främst kvar i escapesekvenser och i filrättigheter i Unix.

En byte rymmer ett värde från 0 till 255, vilket är 0 till 377 oktalt. Den här konverteraren skriver varje byte i indatan som exakt tre oktala siffror med inledande nollor, så att alla grupper blir lika breda och till och med kan skrivas ihop utan avgränsare. Texten görs först om till byte med den valda teckenkodningen: en byte per tecken för vanlig ASCII, två till fyra byte per tecken för andra skriftsystem i UTF-8.

Oktala escapesekvenser

I C, C++, Python, Perl och skalets printf kan du skriva en byte som ett omvänt snedstreck följt av upp till tre oktala siffror: \101 är bokstaven A och \012 är en radmatning.

Verktyget skriver ut enbart siffror, utan omvända snedstreck. För att bygga en sträng med escapesekvenser tar du utdatan med mellanslag som avgränsare, ersätter varje mellanslag med ett omvänt snedstreck och lägger till ett framför den första gruppen. För att avkoda escapesekvenser gör du tvärtom och ersätter de omvända snedstrecken med mellanslag, eftersom avkodaren bara accepterar siffror och avgränsare.

Filrättigheter som 755 är också oktala, men de är tal, inte text. För att konvertera ett sådant tal till binär eller decimal form använder du talbaskonverteraren.

Oktala tal i programkod

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

Specifikation

Alfabet0-7
Utdatastorlek3 siffror per byte (300 %)
UtfyllnadIngen
StandardOktalt positionssystem
SkiftlägeskänsligNej

Exempel

Indata (UTF-8)Utdata
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

Vanliga frågor

Varför har varje byte tre oktala siffror?

Det största bytevärdet, 255, är 377 oktalt, så tre siffror räcker alltid. När mindre värden fylls ut med inledande nollor blir alla grupper lika breda, och det är det som gör att en sträng utan avgränsare kan delas upp i byte igen.

Hur avkodar jag oktala tal utan mellanslag?

Klistra in siffrorna som en sammanhängande sträng. Avkodaren delar upp den i grupper om tre, så längden måste vara en multipel av 3. Om några värden har färre än tre siffror separerar du dem i stället med mellanslag, kommatecken eller radbrytningar.

Varför avvisas ett värde som 400?

Oktalt 400 är 256, vilket inte ryms i en byte. Giltiga bytevärden går från 0 till 377, och avkodaren anger positionen för varje grupp utanför det intervallet. Siffrorna 8 och 9 är inte giltiga oktala siffror över huvud taget.

Kan jag få oktala värden för en annan teckenuppsättning?

Ja. Välj den i menyn Teckenkodning, till exempel Windows-1252 eller ISO-8859-1 för en byte per västeuropeiskt tecken, eller GBK eller Shift_JIS för kinesisk och japansk text.