Cómo se usa
- Elige Codificar para convertir texto a octal o Decodificar para convertir valores octales de nuevo en texto.
- Escribe o pega la entrada, o abre un archivo para convertir sus bytes.
- Selecciona un separador para la salida: Espacio, Ninguno, Coma o Salto de línea.
- Copia el resultado o descárgalo como archivo.
¿Qué es el sistema octal?
El sistema octal, o Base8, escribe los números con los dígitos del 0 al 7. Cada dígito octal representa exactamente tres bits, lo que hizo popular el octal en los primeros equipos informáticos cuyo tamaño de palabra era múltiplo de tres, como el PDP-8 de 12 bits y el PDP-10 de 36 bits. Hoy sobrevive sobre todo en las secuencias de escape y en los permisos de archivo de Unix.
Un byte contiene un valor de 0 a 255, que en octal va de 0 a 377. Este conversor escribe cada byte de la entrada con exactamente tres dígitos octales, con ceros a la izquierda, de modo que todos los grupos tienen el mismo ancho e incluso pueden unirse sin separador. Primero, el texto se convierte en bytes con la codificación de texto seleccionada: un byte por carácter para ASCII simple y de dos a cuatro bytes por carácter para otros sistemas de escritura en UTF-8.
Secuencias de escape octales
C, C++, Python, Perl y el printf del shell permiten escribir un byte como una barra invertida seguida de hasta tres dígitos octales: \101 es la letra A y \012 es un salto de línea.
Esta herramienta genera solo dígitos, sin barras invertidas. Para construir una cadena con escapes, toma la salida separada por espacios, sustituye cada espacio por una barra invertida y añade otra delante del primer grupo. Para decodificar secuencias de escape, haz lo contrario y sustituye las barras invertidas por espacios, porque el decodificador solo acepta dígitos y separadores.
Los permisos de archivo como 755 también son octales, pero son números, no texto. Para convertir un número así a binario o decimal, usa el conversor de bases numéricas.
Octal en código
# 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' # muestra Hi
printf 'Hi' | od -An -to1 # 110 151
Especificación
| Alfabeto | 0-7 |
|---|---|
| Tamaño de salida | 3 dígitos por byte (300%) |
| Relleno | Ninguno |
| Estándar | Octal posicional |
| Distingue mayúsculas y minúsculas | No |
Ejemplos
| Entrada (UTF-8) | Salida |
|---|---|
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 |
Preguntas frecuentes
¿Por qué cada byte tiene tres dígitos octales?
El valor de byte más alto, 255, es 377 en octal, así que tres dígitos siempre bastan. Rellenar los valores más pequeños con ceros a la izquierda hace que todos los grupos tengan el mismo ancho, y eso es lo que permite volver a dividir en bytes una cadena sin separadores.
¿Cómo decodifico octal sin espacios?
Pega los dígitos como una sola cadena continua. El decodificador la divide en grupos de tres, así que la longitud debe ser múltiplo de 3. Si algunos valores tienen menos de tres dígitos, sepáralos con espacios, comas o saltos de línea.
¿Por qué se rechaza un valor como 400?
El 400 octal equivale a 256, que no cabe en un byte. Los valores de byte válidos van de 0 a 377, y el decodificador indica la posición de cualquier grupo fuera de ese rango. Los dígitos 8 y 9 ni siquiera son dígitos octales válidos.
¿Puedo obtener valores octales para otro juego de caracteres?
Sí. Elígelo en el menú Codificación de texto, por ejemplo Windows-1252 o ISO-8859-1 para tener un byte por carácter de Europa occidental, o GBK o Shift_JIS para texto en chino o en japonés.