
Por qué tu conversión de binario a texto produce los caracteres equivocados
Publicado el 24 jul 2026
Una cadena de 1 y 0 parece inequívoca — es binario, no hay nada que interpretar. En la práctica, convertir binario a texto falla exactamente de la misma manera que hexadecimal a texto, por la misma razón subyacente: una secuencia de bits no es texto hasta que has hecho varias suposiciones sobre cómo agruparla e interpretarla, y equivocarse en cualquiera de esas suposiciones produce un resultado incorrecto de una forma concreta y diagnosticable.
Causa 1: agrupación de bits incorrecta (7 bits vs. 8 bits)
El ASCII estándar solo necesita 7 bits por carácter; la mayoría de las herramientas de binario a texto usan por defecto bytes de 8 bits porque así es como se almacena realmente el texto en sistemas reales. Si una cadena binaria se generó asumiendo agrupaciones de 7 bits (algunos ejemplos de libros de texto y sistemas antiguos todavía lo hacen así) y la decodificas como bytes de 8 bits, cada carácter sale desplazado — el límite de agrupación está mal desde el primer bit, así que la corrupción es uniforme en todo el resultado en lugar de empezar limpia y degradarse a mitad de camino.
La señal: si literalmente todos los caracteres del resultado están mal, no solo algunos, comprueba la suposición de agrupación de bits antes que cualquier otra cosa.
Causa 2: un bit de más o de menos desplaza todo lo que viene después
Este es el equivalente binario de un dígito hexadecimal impar — un 0 o 1 suelto de más (un carácter extra de un copiar-pegar, un dígito perdido, un espacio en blanco que se analizó como datos) desplaza el límite de byte de cada grupo posterior a ese punto. A diferencia de la causa 1, esto produce texto que es correcto hasta cierto punto y luego ilegible — una señal fuerte de que el número de bits en sí está mal en algún punto de la cadena, no de que el esquema de codificación esté mal en todas partes.
Cuenta primero el total de bits: la longitud de la cadena debería ser un múltiplo exacto de 8 (o de 7, si has confirmado que esa es la agrupación en uso). Si no lo es, el bit de más o de menos es el fallo, no el decodificador.
Causa 3: codificación de caracteres, exactamente igual que con el hexadecimal
Una vez que los bits están correctamente agrupados en bytes, todavía tienes que decidir qué significan esos valores de byte como caracteres — UTF-8, ASCII, Latin-1. Esto es idéntico al caso de hexadecimal a texto: los caracteres UTF-8 de varios bytes (letras acentuadas, símbolos, escrituras no latinas) decodificados byte a byte como si cada uno fuera su propio carácter producen dos o tres símbolos ilegibles en lugar de uno correcto. Si la agrupación de bits está confirmada como correcta (descartadas las causas 1 y 2) y el resultado sigue mal específicamente alrededor de caracteres no ASCII, esta es casi siempre la causa restante.
Causa 4: endianness, para binario que representa números en vez de texto
Si la cadena binaria codifica un valor numérico en lugar de datos de caracteres — un prefijo de longitud, una suma de comprobación, un ID incrustado junto al texto — el orden de bits/bytes importa y no hay un valor por defecto universal. 00000001 como byte independiente no es ambiguo, pero los valores numéricos de varios bytes pueden almacenarse con el byte más significativo primero o el menos significativo primero, según el sistema que los produjo, y leerlo con la suposición equivocada produce silenciosamente un número distinto, de aspecto plausible pero incorrecto, en lugar de un error evidente.
Diagnóstico en orden
- Comprueba que el total de bits es un múltiplo exacto de tu agrupación asumida (normalmente 8) — un recuento incorrecto significa la causa 2, arregla la entrada.
- Si todos los caracteres están mal de manera uniforme desde el principio, sospecha del tamaño de agrupación en sí (causa 1) antes de tocar la codificación.
- Si el resultado sale limpio al principio y se degrada a mitad de camino, eso señala un bit suelto o perdido en ese punto (causa 2), no un problema de codificación.
- Si tanto la agrupación como el recuento de bits son correctos y solo los caracteres no ASCII se ven mal, es codificación de caracteres (causa 3).
- Si los datos representan un número en vez de texto y el valor parece plausible pero incorrecto, comprueba el orden de bytes (causa 4) antes de asumir que la lógica de conversión en sí está rota.
Igual que con el hexadecimal, el paso de conversión en sí es trivial — el fallo real casi siempre vive en una de estas cuatro suposiciones, no en el código que hace la conversión.