Texto para binário e volta, byte a byte, em UTF-8
Código binário
Traduza texto para código binário e binário para texto. A letra A é 01000001; a palavra oi é01101111 01101001. Acentos, cedilha e emojis entram e voltam inteiros, porque o tradutor fala a mesma codificação que o seu navegador.
Como usar
Escreva na caixa da esquerda. Cada caractere vira um ou mais grupos de oito dígitos na direita, separados por espaço, um grupo por byte.
Cole grupos de oito zeros e uns na caixa da direita para ler o texto. Grupos que não tenham exatamente oito dígitos binários são ignorados, em vez de virar um caractere errado.
Acentos, cedilha e emojis entram normalmente, porque o tradutor usa UTF-8, a codificação que a web inteira usa. Uma letra acentuada ocupa dois grupos e a maioria dos emojis ocupa quatro.
O que o binário guarda
Um computador não guarda letras; guarda números, e um acordo diz qual número é qual letra. O acordo mais antigo ainda em uso é a tabela ASCII, com cento e vinte e oito códigos, e o mais usado hoje é o Unicode, que numera mais de cem mil caracteres de todas as escritas. O código binário de um texto é a sequência desses números escrita em base dois, agrupada em bytes de oito dígitos.
Como o Unicode tem muito mais caracteres do que cabem em um byte, ele precisa de uma regra para espalhar um número grande por vários bytes. Essa regra é o UTF-8, e ela foi desenhada para que os cento e vinte e oito caracteres da tabela ASCII continuem ocupando um único byte, idêntico ao de antes. Por isso 01101111 01101001 tem dois grupos para duas letras, enquanto café tem cinco grupos para quatro letras: 01100011 01100001 01100110 11000011 10101001. O acento custa um byte a mais, e o tradutor devolvecafé sem perder nada.
Um tradutor que trabalhe nas letras, e não nos bytes, tropeça na primeira palavra com acento, porque a letra acentuada não cabe em um byte só. Este trabalha nos bytes, e é isso que faz a volta ser exata para qualquer texto: o que entra em UTF-8 sai em UTF-8, byte por byte, na mesma ordem. Ele também ignora grupos que não são oito dígitos de zero ou um, em vez de tentar ler lixo como texto.
Binário, hexadecimal e o mesmo byte
Oito dígitos binários são difíceis de ler, e por isso programadores escrevem o mesmo byte em hexadecimal, com dois dígitos de zero a F. A conversão é direta, quatro bits por dígito: a letra A é01000001 em binário e 41 em hexadecimal; oi é 6F 69. Atabela ASCII do site mostra as duas escritas de cada código lado a lado, junto com o decimal.
O binário de um caractere não é o binário do número que ele representa. O caractere zero é 00110000, porque é o código quarenta e oito da tabela, e não oito zeros. Quem usa o tradutor para conferir aritmética em base dois vai estranhar; o que ele traduz é texto.
Tabela
Letras e dígitos com seus bytes em UTF-8, gerados pela mesma função que o tradutor usa. As três primeiras maiúsculas mostram o padrão: o mesmo prefixo e um contador no fim.
- A
01000001 - B
01000010 - C
01000011
| Caractere | Byte |
|---|---|
| Maiúsculas | |
| A | 01000001 |
| B | 01000010 |
| C | 01000011 |
| D | 01000100 |
| E | 01000101 |
| F | 01000110 |
| G | 01000111 |
| H | 01001000 |
| I | 01001001 |
| J | 01001010 |
| K | 01001011 |
| L | 01001100 |
| M | 01001101 |
| N | 01001110 |
| O | 01001111 |
| P | 01010000 |
| Q | 01010001 |
| R | 01010010 |
| S | 01010011 |
| T | 01010100 |
| U | 01010101 |
| V | 01010110 |
| W | 01010111 |
| X | 01011000 |
| Y | 01011001 |
| Z | 01011010 |
| Minúsculas | |
| a | 01100001 |
| b | 01100010 |
| c | 01100011 |
| d | 01100100 |
| e | 01100101 |
| f | 01100110 |
| g | 01100111 |
| h | 01101000 |
| i | 01101001 |
| j | 01101010 |
| k | 01101011 |
| l | 01101100 |
| m | 01101101 |
| n | 01101110 |
| o | 01101111 |
| p | 01110000 |
| q | 01110001 |
| r | 01110010 |
| s | 01110011 |
| t | 01110100 |
| u | 01110101 |
| v | 01110110 |
| w | 01110111 |
| x | 01111000 |
| y | 01111001 |
| z | 01111010 |
| Dígitos | |
| 0 | 00110000 |
| 1 | 00110001 |
| 2 | 00110010 |
| 3 | 00110011 |
| 4 | 00110100 |
| 5 | 00110101 |
| 6 | 00110110 |
| 7 | 00110111 |
| 8 | 00111000 |
| 9 | 00111001 |
Perguntas frequentes
Como se escreve uma letra em código binário?
Cada caractere tem um número na tabela de caracteres, e esse número é escrito em base dois com oito dígitos. A letra A maiúscula é o número sessenta e cinco, que em binário é 01000001. A minúscula é trinta e dois a mais, 01100001: a diferença entre maiúscula e minúscula é um único bit.
Por que oito dígitos?
Porque a memória dos computadores é organizada em bytes de oito bits, e um byte representa números de zero a duzentos e cinquenta e cinco. Os cento e vinte e oito caracteres da tabela ASCII cabem em sete bits, e o oitavo sobrou; o UTF-8 usa esse bit para marcar os caracteres que precisam de mais de um byte.
Como acentos e emojis viram binário?
Em UTF-8, um caractere fora da tabela ASCII ocupa de dois a quatro bytes, cada um escrito com oito dígitos. O é com acento agudo são dois bytes: 11000011 10101001. Um emoji de rosto sorridente são 4 bytes. O tradutor devolve o texto original exatamente, porque nada é descartado no caminho.
Binário e hexadecimal são a mesma coisa?
Representam o mesmo byte em bases diferentes. Cada quatro dígitos binários correspondem a um dígito hexadecimal, então um byte são oito dígitos binários ou dois hexadecimais: a letra A é 01000001 em binário e 41 em hexadecimal. A tabela ASCII do site mostra as duas formas lado a lado.
O zero em binário é zero?
O caractere zero, o que aparece num texto, não é o número zero. Ele é o código quarenta e oito, 00110000. É uma confusão comum ao ler binário pela primeira vez: o que está codificado é o símbolo, não o valor.