Como traduzir binário para texto
- Cole o binário em Entrada · Binário. Os bytes podem ser separados por espaços, quebras de linha, vírgulas, ponto e vírgula ou
|, ou não ter separação nenhuma. - O texto aparece em Saída · Texto enquanto você digita.
- Se aparecer
�, os bits não são UTF-8 válido. Experimente outro Charset abaixo da saída, como ISO-8859-1. - Copiar saída copia o texto. Texto → Binário, acima da ferramenta, inverte a direção, assim como a página Texto para binário.
Como ler binário à mão
Cada grupo de 8 bits é um byte. Dê um valor a cada posição, de 128 à esquerda até 1 à direita, e some as posições que têm 1:
| Bit | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
|---|---|---|---|---|---|---|---|---|
| Valor | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
01001000 é 64 + 8 = 72, e o caractere 72 do ASCII é H. 01101001 é 64 + 32 + 8 + 1 = 105, que é i.
Para letras, quase nunca é preciso fazer a conta, porque o ASCII segue um padrão. Os três primeiros bits dizem que tipo de caractere é, e nas letras os cinco últimos bits são a posição no alfabeto:
| Começa com | Significado | Exemplos |
|---|---|---|
010 | letra maiúscula | 01000001 A, 01001000 H, 01011010 Z |
011 | letra minúscula | 01100001 a, 01101001 i, 01111010 z |
0011 | dígito | 00110000 0, 00111001 9 |
00100000 | espaço |
Então 01000011 termina em 00011, que é 3, a terceira letra: C. Maiúsculas e minúsculas diferem em um único bit, o terceiro a partir da esquerda.
Formatos que o tradutor aceita
| Entrada | Lida como |
|---|---|
01001000 01101001 | grupos de 8 bits separados por espaços ou quebras de linha |
01001000,01101001 ou 01001000;01101001 | vírgulas, ponto e vírgula ou | como separadores |
0b01001000 0b01101001 | prefixos 0b são ignorados |
1001000 1101001 | grupos de 7 bits, como nos exercícios clássicos de ASCII de 7 bits |
0100100001101001 | uma única sequência de bits, cortada em pedaços de 8 bits |
Todas decodificam para Hi. Um grupo com menos de 8 bits é lido como um byte, e é por isso que a versão de 7 bits funciona. Se algum grupo tiver mais de 8 bits, a ferramenta junta todos os bits em uma sequência só e a corta em bytes. Qualquer coisa além de 0, 1 e separadores interrompe a conversão, com a posição do caractere inválido; o botão Mostrar ao lado da mensagem o seleciona na entrada.
Binário que não é ASCII simples
Bytes ASCII sempre começam com 0. Um byte que começa com 1 faz parte de um caractere UTF-8 de vários bytes, e os bits iniciais dizem o tamanho da sequência:
| Caractere | Bits em UTF-8 | Padrão |
|---|---|---|
é | 11000011 10101001 | 110 inicia um caractere de 2 bytes, 10 o continua |
€ | 11100010 10000010 10101100 | 1110 inicia um caractere de 3 bytes |
👋 | 11110000 10011111 10010001 10001011 | 11110 inicia um caractere de 4 bytes |
Se você decodificar esses bytes um por um, sai lixo como é. Mantenha os bytes juntos e deixe o Charset em UTF-8.
De binário para Base64
Binário, hex e Base64 são formas de escrever os mesmos bytes. O binário usa 8 caracteres por byte, o hex 2 e o Base64 cerca de 1,33, por isso o Base64 é o que os sistemas usam para transportar dados binários em texto: anexos de e-mail, campos JSON, data URIs. Para transformar seus bits diretamente em Base64, use Binário para Base64. Para ver os bits dentro de uma string Base64, use Base64 para binário; como o Base64 funciona mostra como ele reagrupa esses bits de 6 em 6.
Binário para texto no código
bits = "01001000 01101001"
bytes(int(b, 2) for b in bits.split()).decode("utf-8") # 'Hi'
const bits = "01001000 01101001";
new TextDecoder().decode(Uint8Array.from(bits.split(" "), b => parseInt(b, 2))); // 'Hi'
Os dois supõem que os grupos estão separados por um único espaço; a ferramenta acima é mais tolerante com o formato da entrada.
Perguntas frequentes
O que significa 01001001 00100000 01101100 01101111 01110110 01100101 00100000 01111001 01101111 01110101?
I love you (eu te amo, em inglês). Cada grupo de 8 bits é um caractere ASCII, e 00100000 é o espaço entre as palavras.
Quantos dígitos binários formam uma letra?
Oito, um byte, para qualquer letra ou dígito em texto ASCII simples. Letras acentuadas ocupam 16 bits em UTF-8, a maioria dos outros alfabetos 16 ou 24, e emoji 32.
Dá para traduzir binário sem espaços?
Dá. Uma sequência contínua como 0100100001101001 é cortada em pedaços de 8 bits a partir da esquerda. O comprimento precisa ser múltiplo de 8; caso contrário, a ferramenta informa quantos bits encontrou.
Por que meu binário vira um monte de caracteres sem sentido?
Geralmente falta ou sobra um bit em uma sequência sem espaços, o que desloca todos os bytes seguintes. Se puder, coloque espaços entre os bytes; aí um grupo errado estraga um só caractere e o resto continua legível.