
Por que é que a sua conversão de binário para texto apresenta caracteres errados
Publicado em 24 de jul. de 2026
Uma sequência de 1s e 0s parece inequívoca — é binária, não há nada para interpretar. Na prática, a conversão de binário para texto falha exatamente da mesma forma que a conversão de hexadecimal para texto, pela mesma razão subjacente: uma sequência de bits só se torna texto depois de se terem feito várias suposições sobre como agrupá-la e interpretá-la, e qualquer erro numa dessas suposições produz um resultado errado de uma forma específica e diagnosticável.
Causa 1: agrupamento incorreto de bits (7 bits vs. 8 bits)
O ASCII padrão necessita apenas de 7 bits por carácter; a maioria das ferramentas de conversão de binário para texto utiliza, por predefinição, bytes de 8 bits, porque é assim que o texto é efetivamente armazenado em sistemas reais. Se uma cadeia binária foi gerada assumindo agrupamentos de 7 bits (alguns exemplos de livros didáticos e sistemas mais antigos ainda fazem isso) e a descodificares como bytes de 8 bits, todos os caracteres ficam deslocados — o limite do agrupamento está errado desde o primeiro bit, pelo que a corrupção é uniforme em toda a saída, em vez de começar correta e se deteriorar a meio.
A pista: se literalmente todos os caracteres na saída estiverem errados, e não apenas alguns, verifique a suposição de agrupamento de bits antes de mais nada.
Causa 2: um bit a mais ou a menos desloca tudo o que vem a seguir
Este é o equivalente binário de um dígito hexadecimal errado — um único 0 ou 1 deslocado (um caractere extra resultante de um copiar-colar, um dígito omitido, um espaço em branco que foi interpretado como dados) desloca o limite do byte para todos os grupos a partir desse ponto. Ao contrário da causa 1, isto produz texto que está correto até certo ponto e distorcido a seguir — um forte indício de que a própria contagem de bits está errada algures na cadeia, em vez de o esquema de codificação estar errado em toda a cadeia.
Conte primeiro o total de bits: o comprimento da cadeia deve ser um múltiplo exato de 8 (ou 7, se tiver confirmado que esse é o agrupamento em uso). Se não for, o bit a mais ou em falta é o erro, não o descodificador.
Causa 3: codificação de caracteres, exatamente como no caso hexadecimal
Depois de os bits estarem corretamente agrupados em bytes, ainda é necessário decidir o que esses valores de byte significam como caracteres — UTF-8, ASCII, Latin-1. Isto é idêntico ao caso da conversão de hexadecimal para texto: os caracteres UTF-8 multibyte (letras acentuadas, símbolos, alfabetos não latinos) descodificados um byte de cada vez, como se cada byte fosse um caractere próprio, produzem dois ou três símbolos distorcidos em vez de um correto. Se se confirmar que o agrupamento de bits está correto (causas 1 e 2 excluídas) e a saída continuar errada, especificamente em torno de caracteres não-ASCII, esta é quase sempre a causa restante.
Causa 4: endianidade, para binário que representa números em vez de texto
Se a cadeia binária codificar um valor numérico em vez de dados de caracteres — um prefixo de comprimento, uma soma de verificação, um ID incorporado juntamente com o texto —, a ordem dos bits/bytes é importante e não existe um padrão universal. 00000001, como um byte isolado, é inequívoco, mas os valores numéricos multibyte podem ser armazenados com o byte mais significativo primeiro ou com o byte menos significativo primeiro, dependendo do sistema que os produziu, e lê-los com a suposição errada produz silenciosamente um número diferente, aparentemente plausível, em vez de um erro óbvio.
Diagnóstico por ordem
- Verifique se a contagem total de bits é um múltiplo exato do agrupamento assumido (normalmente 8) — uma contagem incorreta indica a causa 2; corrija a entrada.
- Se todos os caracteres estiverem errados de forma uniforme desde o início, suspeite do próprio tamanho do agrupamento (causa 1) antes de alterar a codificação.
- Se a saída estiver correta no início e se deteriorar a meio, isso indica um bit errado ou em falta nessa posição (causa 2), e não um problema de codificação.
- Se o agrupamento e a contagem de bits estiverem corretos e apenas os caracteres não ASCII parecerem errados, trata-se da codificação de caracteres (causa 3).
- Se os dados representarem um número em vez de texto e o valor parecer plausível, mas errado, verifique a ordem dos bytes (causa 4) antes de assumir que a própria lógica de conversão está incorreta.
Tal como acontece com o hexadecimal, o passo de conversão é trivial — o verdadeiro erro reside quase sempre numa destas quatro suposições, e não no código que efetua a conversão.