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

  1. 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.

  2. 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.

  3. 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
62 entradas, geradas pelo código
CaractereByte
Maiúsculas
A01000001
B01000010
C01000011
D01000100
E01000101
F01000110
G01000111
H01001000
I01001001
J01001010
K01001011
L01001100
M01001101
N01001110
O01001111
P01010000
Q01010001
R01010010
S01010011
T01010100
U01010101
V01010110
W01010111
X01011000
Y01011001
Z01011010
Minúsculas
a01100001
b01100010
c01100011
d01100100
e01100101
f01100110
g01100111
h01101000
i01101001
j01101010
k01101011
l01101100
m01101101
n01101110
o01101111
p01110000
q01110001
r01110010
s01110011
t01110100
u01110101
v01110110
w01110111
x01111000
y01111001
z01111010
Dígitos
000110000
100110001
200110010
300110011
400110100
500110101
600110110
700110111
800111000
900111001

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.