Konverter tekst til oktal og oktal til tekst

Skriv hver byte i teksten som et tresifret oktaltall, eller gjør en liste med oktale byteverdier om til lesbar tekst igjen. Fungerer med UTF-8 og mange eldre tegnsett.

Kjører helt i nettleseren din. Ingenting lastes opp.

Slik bruker du verktøyet

  1. Velg Kode for å konvertere tekst til oktal, eller Dekode for å konvertere oktalverdier tilbake til tekst.
  2. Skriv eller lim inn inndataene, eller åpne en fil for å konvertere bytene i den.
  3. Velg Skilletegn for utdataene: Mellomrom, Ingen, Komma eller Linjeskift.
  4. Kopier resultatet eller last det ned som en fil.

Hva er oktal?

Oktal, eller Base8, skriver tall med sifrene 0 til 7. Hvert oktale siffer står for nøyaktig tre bit, og derfor var oktal populært på tidlige datamaskiner med ordlengder som var multipler av tre, for eksempel 12-bits PDP-8 og 36-bits PDP-10. I dag lever tallsystemet videre hovedsakelig i escape-sekvenser og i filrettigheter på Unix.

En byte har en verdi fra 0 til 255, som er 0 til 377 i oktal. Denne konverteren skriver hver byte i inndataene som nøyaktig tre oktale sifre med innledende nuller, slik at alle gruppene har samme bredde og til og med kan settes sammen uten skilletegn. Teksten gjøres først om til byte med den valgte tegnkodingen: én byte per tegn for ren ASCII, og to til fire byte per tegn for andre skriftsystemer i UTF-8.

Oktale escape-sekvenser

I C, C++, Python, Perl og skallets printf kan du skrive en byte som en omvendt skråstrek etterfulgt av opptil tre oktale sifre: \101 er bokstaven A, og \012 er et linjeskift (line feed).

Dette verktøyet skriver ut rene sifre uten omvendte skråstreker. For å lage en escapet streng tar du utdataene med mellomrom som skilletegn, erstatter hvert mellomrom med en omvendt skråstrek og setter en foran den første gruppen. For å dekode escape-sekvenser gjør du det motsatte og erstatter de omvendte skråstrekene med mellomrom, fordi dekoderen bare godtar sifre og skilletegn.

Filrettigheter som 755 er også oktale, men de er tall, ikke tekst. For å konvertere et slikt tall til binært eller desimalt bruker du tallsystemkonverteren.

Oktal i kode

# 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

Spesifikasjon

Alfabet0-7
Utdatastørrelse3 sifre per byte (300 %)
UtfyllingIngen
StandardPosisjonelt oktalt tallsystem
Skiller store og små bokstaverNei

Eksempler

Inndata (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

Ofte stilte spørsmål

Hvorfor har hver byte tre oktale sifre?

Den største byteverdien, 255, er 377 i oktal, så tre sifre er alltid nok. Når mindre verdier fylles ut med innledende nuller, får alle gruppene samme bredde, og det er dette som gjør at en streng uten skilletegn kan deles opp i byte igjen.

Hvordan dekoder jeg oktal uten mellomrom?

Lim inn sifrene som én sammenhengende streng. Dekoderen deler den opp i grupper på tre, så lengden må være et multiplum av 3. Hvis noen verdier har færre enn tre sifre, skiller du dem i stedet med mellomrom, komma eller linjeskift.

Hvorfor blir en verdi som 400 avvist?

Oktal 400 er 256, som ikke får plass i én byte. Gyldige byteverdier går fra 0 til 377, og dekoderen oppgir posisjonen til alle grupper utenfor dette området. Sifrene 8 og 9 er ikke gyldige oktale sifre i det hele tatt.

Kan jeg få oktalverdier for et annet tegnsett?

Ja. Velg det under Tegnkoding, for eksempel Windows-1252 eller ISO-8859-1 for én byte per vesteuropeisk tegn, eller GBK eller Shift_JIS for kinesisk og japansk tekst.