MiServe DevTools

Os seus autocolantes

Fixe aqui as ferramentas. Ficam guardadas neste navegador.

Conversor de texto para hexadecimal, binário e bytes

Veja os mesmos bytes como texto UTF-8, hexadecimal, binário, decimal, octal e Base64, e edite qualquer um deles para atualizar os restantes.

Separador entre bytes
Tamanho dos grupos binários

Funciona no seu navegador. Nada do que cola é enviado.

Sobre esta ferramenta

Uma sequência de bytes, seis formas de a escrever

Um computador guarda o texto como bytes, e um byte é um número de 0 a 255. O hexadecimal escreve cada byte com dois dígitos (48), o binário com oito bits (01001000), o octal com três dígitos (110) e o decimal como um número simples (72). As quatro formas representam o mesmo byte, que é a letra H em ASCII e em UTF-8. O Base64 agrupa cada três bytes em quatro caracteres imprimíveis.

As vistas desta página mostram sempre os mesmos bytes. Escreva em qualquer uma delas e as outras são recalculadas. Se o que escrever não puder ser lido, esse campo fica assinalado e os outros mantêm o último conteúdo válido.

Caracteres não são bytes

A vista de texto é codificada em UTF-8, em que cada ponto de código ocupa de um a quatro bytes. As letras ASCII ocupam um, é ocupa dois (c3 a9), a maioria dos caracteres CJK ocupa três e a maioria dos emojis ocupa quatro ou mais. É por isso que a contagem de bytes e a de caracteres são diferentes.

A contagem de caracteres é o número de clusters de grafemas, as unidades que um leitor vê como um único carácter, quando o navegador disponibiliza Intl.Segmenter. Um emoji de família é um único grafema formado por vários pontos de código unidos por zero-width joiners (ZWJ), por isso também é mostrada a contagem de pontos de código.

Nem todas as sequências de bytes são UTF-8 válido. Quando introduz bytes que não o são, a vista de texto mostra o carácter de substituição U+FFFD no lugar dos bytes inválidos e a ferramenta avisa-o.

Formatos de entrada aceites

Os bytes podem ser separados por espaços, quebras de linha, vírgulas ou underscores e, no hexadecimal, também por dois pontos ou hífenes, como num endereço MAC. São aceites os prefixos 0x, \x, 0b e 0o, por isso pode colar os valores de um literal de array tirado do código-fonte, sem os parênteses retos. Os dígitos escritos sem separadores são lidos com largura fixa: dois dígitos hexadecimais, oito bits ou três dígitos octais por byte.

Uma vírgula ou um prefixo inicia sempre um novo valor, por isso 0b1000, 0b0001 são os dois bytes 8 e 1. O binário escrito em grupos de quatro separados apenas por espaços, como 1000 0001, é lido oito bits de cada vez e dá um único byte.

O estilo de saída Prefixo 0x escreve uma lista separada por vírgulas, como 0x48, 0x65, pronta a colar de novo no código. As vistas binária e octal usam 0b e 0o da mesma forma, e a vista decimal escreve números simples. Os bytes decimais não têm largura fixa, por isso mantêm um espaço entre eles mesmo quando o separador está definido como Nenhum.

Perguntas

Como converto texto em hexadecimal?

Cada carácter é primeiro codificado em bytes, aqui com UTF-8, e cada byte é escrito como dois dígitos hexadecimais. A palavra Hi passa a 48 69. Escreva o texto no primeiro campo e leia a vista hexadecimal.

Porque é que um carácter dá origem a vários bytes?

O UTF-8 só usa um byte para o ASCII. As letras acentuadas, como é, precisam de dois bytes, a maioria dos caracteres chineses, japoneses e coreanos precisa de três e a maioria dos emojis precisa de quatro ou mais.

O que significa o carácter � no texto?

É o U+FFFD, o carácter de substituição. Aparece onde os bytes não são UTF-8 válido, por exemplo quando os dados são binários ou foram escritos noutra codificação, como Latin-1 ou UTF-16.

O meu texto é enviado para um servidor?

Não. A conversão é feita por JavaScript no separador do seu navegador. O que escreve não é enviado para lado nenhum nem fica guardado.

Mais ferramentas de Codificação