Traductor binario
El texto se convierte en binario codificando cada carácter como un número y escribiendo ese número en base dos. Este traductor usa UTF-8, así que una letra simple como la A es un byte —01000001—, mientras que una letra acentuada o un emoji ocupa de dos a cuatro bytes. Decodificar es el proceso inverso, leyendo ocho bits cada vez.
Cómo traducir binario
Casi todo el binario que se encuentra por ahí es ASCII, siete bits por carácter rellenados a ocho, y por eso se descodifica limpio aquí. Lo que se sale de los primeros 128 caracteres es donde las codificaciones divergen, y en español eso es constante: una «é» o una «ñ» puede ser un byte en Latin-1 y son dos en UTF-8. Esta herramienta escribe UTF-8 y lee UTF-8, y cuando un flujo no es UTF-8 válido cae a bytes sueltos en vez de rechazarlo.
Los puntos de referencia de ASCII explican casi todo lo que vas a ver. La A mayúscula es 65 y la a minúscula es 97: exactamente 32 de diferencia, y 32 es un solo bit, que es por lo que 01000001 y 01100001 se diferencian en una posición y por lo que cambiar de caja era una operación de bits y no una búsqueda en una tabla. El espacio es 32, el dígito cero es 48, y el rango imprimible va de 32 a 126. Todo lo que está por debajo de 32 es un código de control, y por eso un final de línea de Windows pegado desde un archivo de texto llega como dos bytes, 00001101 00001010, donde el de Unix es un solo 00001010.
Decodificar es la dirección más quisquillosa, porque los bits no llevan puntuación propia y el corte hay que suponerlo. Aquí se leen de ocho en ocho, y se cae a siete cuando el total es divisible por siete y no por ocho; mucho binario de acertijo es ASCII de siete bits escrito sin relleno. Los grupos de anchura mezclada no los puede recuperar ningún decodificador, y ese es todo el argumento para rellenar cada carácter a ocho bits cuando escribes binario.
Para qué la usa la gente
- Descifrar una cadena binaria de un acertijo o de un CTF
- Ver qué bits produce una cadena concreta
- Leer una captura a nivel de bits como texto
- Comprobar una conversión hecha a mano
- Enseñar codificación de caracteres en una clase
- Ver cuántos bytes cuestan de verdad una tilde o una eñe
Preguntas
01000001, que es el código 65 rellenado a ocho bits. La a minúscula es 01100001.
La H mayúscula, código 72. 01001000 01101001 es «Hi».
Sí. Todo lo que no sea un 0 o un 1 se ignora, así que los saltos de línea, los espacios y las comas sueltas funcionan.
De ocho, o de siete en todo el texto. Los separadores se ignoran y el flujo se corta a una anchura fija, así que los grupos de longitud mezclada no se descodifican.
Está contemplado. Si el total no es un número entero de bytes pero sí un múltiplo de siete, se lee como ASCII de siete bits.
Para que un decodificador pueda cortar el flujo a intervalos fijos. Sin relleno, nada en los bits dice dónde acaba un carácter y empieza el siguiente.
Están a 32 de distancia, y 32 es un solo bit: 01000001 frente a 01100001. Cambiarlo cambia la caja.
Dos en UTF-8: 11000011 10110001 para la «ñ» minúscula. Lo mismo vale para cada vocal acentuada, así que un texto en español ocupa bastantes más bytes que caracteres.
Porque UTF-8 es de longitud variable. Los caracteres fuera del rango latino básico ocupan dos, tres o cuatro bytes, y la mayoría de los emojis ocupan cuatro.
Las dos cosas, y coinciden en los primeros 128 caracteres. Por encima de ahí esto escribe UTF-8, así que la é es 11000011 10101001 y no un byte suelto.
Una columna utf8 de MySQL guarda tres bytes por carácter y los emojis necesitan cuatro. El tipo de columna tiene que ser utf8mb4.
Se leen como bytes sueltos en lugar de rechazarse, así que un flujo en Latin-1 vuelve como algo reconocible en vez de como un error.
No. La conversión ocurre en esta página, y por eso sigue siendo instantánea con un pegado muy grande.