Sådan bruger du værktøjet
- Vælg Kod for at konvertere tekst til oktal, eller Afkod for at konvertere oktale værdier tilbage til tekst.
- Skriv eller indsæt inputtet, eller åbn en fil for at konvertere dens bytes.
- Vælg et skilletegn til outputtet: Mellemrum, Ingen, Komma eller Ny linje.
- Kopiér resultatet, eller download det som en fil.
Hvad er oktal?
Oktaltalsystemet, eller Base8, skriver tal med cifrene 0 til 7. Hvert oktalt ciffer svarer til præcis tre bit, hvilket gjorde oktal populært på tidlige computere, hvis ordlængde var et multiplum af tre, for eksempel 12-bit-computeren PDP-8 og 36-bit-computeren PDP-10. I dag lever det primært videre i escapesekvenser og i Unix-filrettigheder.
En byte rummer en værdi fra 0 til 255, hvilket er 0 til 377 i oktal. Denne konverter skriver hver byte i inputtet som præcis tre oktale cifre med foranstillede nuller, så alle grupper har samme bredde og endda kan sættes sammen uden skilletegn. Tekst omdannes først til bytes med den valgte tegnkodning: én byte pr. tegn for ren ASCII og to til fire bytes pr. tegn for andre skriftsystemer i UTF-8.
Oktale escapesekvenser
C, C++, Python, Perl og shellens printf lader dig skrive en byte som en backslash efterfulgt af op til tre oktale cifre: \101 er bogstavet A, og \012 er et linjeskift.
Dette værktøj skriver rene cifre uden backslash. For at lave en escapet streng tager du outputtet med mellemrum som skilletegn, erstatter hvert mellemrum med en backslash og sætter én foran den første gruppe. For at afkode escapesekvenser gør du det modsatte og erstatter hver backslash med et mellemrum, fordi dekoderen kun accepterer cifre og skilletegn.
Filrettigheder som 755 er også oktale, men de er tal, ikke tekst. For at konvertere et sådant tal til binær eller decimal skal du bruge talsystemkonverteren.
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' # udskriver Hi
printf 'Hi' | od -An -to1 # 110 151
Specifikation
| Alfabet | 0-7 |
|---|---|
| Outputstørrelse | 3 cifre pr. byte (300 %) |
| Udfyldning | Ingen |
| Standard | Oktalt positionssystem |
| Skelner mellem store og små bogstaver | Nej |
Eksempler
| Input (UTF-8) | Output |
|---|---|
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 |
Ofte stillede spørgsmål
Hvorfor har hver byte tre oktale cifre?
Den største byteværdi, 255, er 377 i oktal, så tre cifre er altid nok. Når mindre værdier udfyldes med foranstillede nuller, får alle grupper samme bredde, og det er det, der gør det muligt at dele en streng uden skilletegn op i bytes igen.
Hvordan afkoder jeg oktal uden mellemrum?
Indsæt cifrene som én sammenhængende streng. Dekoderen deler den op i grupper på tre, så længden skal være et multiplum af 3. Hvis nogle værdier har færre end tre cifre, skal du i stedet adskille dem med mellemrum, kommaer eller linjeskift.
Hvorfor bliver en værdi som 400 afvist?
Oktal 400 er 256, og det kan ikke være i én byte. Gyldige byteværdier går fra 0 til 377, og dekoderen angiver positionen for enhver gruppe uden for dette interval. Cifrene 8 og 9 er slet ikke gyldige oktale cifre.
Kan jeg få oktale værdier for et andet tegnsæt?
Ja. Vælg det i menuen Tegnkodning, for eksempel Windows-1252 eller ISO-8859-1 for én byte pr. vesteuropæisk tegn eller GBK eller Shift_JIS for kinesisk og japansk tekst.