← Todas as ferramentas

Tabela ASCII

Uma referência completa da tabela ASCII com códigos decimal, hex e binário, caracteres de controle e imprimíveis, e a relação do ASCII com Unicode e UTF-8.
DecHexOctCharNome

A tabela ASCII: como 128 números se tornaram a base do texto

ASCII, sigla de American Standard Code for Information Interchange (Código Padrão Americano para o Intercâmbio de Informações), é a codificação que ensinou os computadores a concordar sobre o que é uma letra. Publicada em 1963 e refinada ao longo dos anos 1960, ela mapeia cada caractere básico do texto em inglês, os dígitos e um punhado de sinais de controle em números que uma máquina pode armazenar e transmitir. Quando você pressiona a tecla do A maiúsculo, o seu computador não armazena uma forma, ele armazena o número 65. A ASCII é a tabela de consulta que faz esse número significar A em todo lugar por onde ele passa.

O padrão é famosamente compacto. A ASCII é um código de 7 bits, o que significa que cada caractere cabe em sete dígitos binários e todo o repertório abrange exatamente 2 elevado a 7, ou seja, 128 pontos de código distintos, numerados de 0 a 127. Essa economia foi proposital. Os primeiros teletipos e modems eram lentos e caros, então cada bit contava. Sete bits eram suficientes para cobrir as letras latinas maiúsculas e minúsculas, os dez dígitos, a pontuação comum e os caracteres de sinalização que mantinham os dispositivos sincronizados, com um bit sobrando que muitos sistemas usavam para verificação de erros.

Grade abstrata e brilhante de células de caracteres ordenadas em índigo escuro com luz ciano e dourada
A ASCII organiza cada caractere em uma grade fixa e ordenada de 128 células numeradas.

Duas metades: caracteres de controle e caracteres imprimíveis

A tabela se divide nitidamente em duas regiões. Os códigos de 0 a 31, mais o código 127 (DEL), são os caracteres de controle. Eles não imprimem um glifo na tela. Em vez disso, instruem um dispositivo a fazer algo: o código 9 é uma tabulação horizontal, o código 10 é a alimentação de linha que move para uma nova linha, o código 13 é o retorno de carro e o código 7 é a campainha que um dia fazia um terminal soar audivelmente. Existem trinta e três desses códigos de sinalização no total e, embora muitos sejam hoje curiosidades históricas, a alimentação de linha, o retorno de carro e a tabulação continuam essenciais para a forma como os arquivos de texto são formatados atualmente.

Os códigos de 32 a 126 são os caracteres imprimíveis, noventa e cinco ao todo. O código 32 é o espaço, que conta como imprimível porque avança o cursor mesmo sem mostrar nada. A partir daí você tem a pontuação e os símbolos, os dígitos de 0 a 9 nos códigos 48 a 57, as letras maiúsculas de A a Z nos códigos 65 a 90 e as letras minúsculas de a a z nos códigos 97 a 122. Uma propriedade elegante surge dessa disposição: as versões minúscula e maiúscula da mesma letra diferem em exatamente 32, e é por isso que inverter um único bit converte o caixa. Essas regularidades não são acidentes, foram projetadas para que ordenação e conversão de caixa pudessem ser feitas com aritmética simples.

Decimal, hexadecimal e binário: três visões de um mesmo número

Todo código ASCII é apenas um número, e você o verá escrito de três maneiras. O decimal é a forma cotidiana de base 10, então A é 65. O hexadecimal, base 16, é a forma à qual os programadores recorrem porque se alinha com os bytes: A é 0x41, e a faixa imprimível vai de 0x20 a 0x7E. O binário, base 2, é a forma que o hardware realmente armazena, então A é 1000001 ao longo dos seus sete bits. O mesmo caractere, três notações, e ter fluência para transitar entre elas é uma habilidade central quando você está lendo despejos de memória ou tráfego de rede. Se você trabalha com essas conversões com frequência, o conjunto mais amplo de tabelas de referência no speedor.net mantém os mapeamentos a um clique de distância.

Fluxos de luz binária e hexadecimal escorrendo para dentro de espaços de glifos brilhantes em um campo azul-marinho
Binário e hexadecimal são simplesmente bases diferentes descrevendo o mesmo ponto de código ASCII.

Onde a ASCII ainda importa

Seria um erro arquivar a ASCII na história. Ela está viva no trabalho diário de qualquer um que mexa com código. As linguagens de programação tratam literais de string, arquivos-fonte e palavras-chave de protocolo como ASCII no nível dos bytes. Protocolos de rede como os cabeçalhos HTTP, o SMTP e muitos formatos de configuração são definidos em ASCII para permanecerem legíveis por humanos. Quando uma string parece corrompida, os desenvolvedores recorrem a um visualizador hexadecimal e leem os bytes brutos contra a tabela ASCII para identificar um caractere de controle perdido ou um final de linha errado. A codificação de URL, o Base64 e as sequências de escape se baseiam todos em valores ASCII. Para quem depura bugs de codificação, uma referência rápida ao lado das suas ferramentas de desenvolvedor transforma um byte misterioso em uma resposta óbvia.

Da ASCII ao Unicode e ao UTF-8

A ASCII lidava com o inglês lindamente e com quase nada além disso. Um teto de 128 caracteres não pode conter letras acentuadas, cirílico, chinês, árabe ou emoji. O Unicode respondeu a isso atribuindo um número único, chamado ponto de código, a cada caractere de cada sistema de escrita, agora bem mais de cem mil deles. O essencial é que o Unicode é um catálogo de caracteres, não um formato de armazenamento, então ele precisa de uma codificação para transformar esses pontos de código em bytes.

O UTF-8 é essa codificação, e é a razão pela qual a ASCII nunca desapareceu de verdade. O UTF-8 usa de um a quatro bytes por caractere, e foi projetado para que os pontos de código de 0 a 127, toda a faixa ASCII, sejam armazenados em um único byte idêntico à ASCII pura. Isso torna o UTF-8 perfeitamente retrocompatível: qualquer arquivo ASCII válido já é um arquivo UTF-8 válido. Caracteres acima de 127 usam bytes adicionais. Essa elegante compatibilidade é uma grande razão pela qual o UTF-8 hoje move a esmagadora maioria da web. Em resumo, a ASCII é o núcleo original de 128 caracteres, o Unicode é o catálogo universal que o contém, e o UTF-8 é a codificação que carrega ambos, mantendo o texto ASCII byte a byte inalterado.

Perguntas frequentes

Quantos caracteres há na tabela ASCII?

A ASCII padrão define 128 caracteres, numerados de 0 a 127. Destes, 95 são caracteres imprimíveis, incluindo o espaço, e 33 são caracteres de controle que sinalizam dispositivos em vez de imprimir um glifo.

Qual é a diferença entre caracteres de controle e imprimíveis?

Os caracteres de controle, códigos de 0 a 31 mais o 127, instruem um dispositivo a fazer algo, como uma alimentação de linha ou tabulação, e não produzem glifo visível. Os caracteres imprimíveis, códigos de 32 a 126, são as letras, os dígitos, a pontuação e o espaço que você de fato vê na tela.

Por que a ASCII é um código de 7 bits?

Sete bits dão exatamente 128 combinações, o que bastava para cobrir letras do inglês, dígitos, pontuação e sinais de controle, economizando banda no hardware lento dos primeiros tempos. O oitavo bit de um byte era frequentemente reservado para a verificação de erros por paridade.

Qual é o código ASCII da letra A?

O A maiúsculo é 65 em decimal, 0x41 em hexadecimal e 1000001 em binário. O a minúsculo é 97 em decimal, exatamente 32 a mais, um padrão embutido que permite que a conversão de caixa aconteça com aritmética simples.

A ASCII é a mesma coisa que o Unicode?

Não. A ASCII cobre 128 caracteres, enquanto o Unicode cataloga mais de cem mil em todos os sistemas de escrita. A ASCII é, na prática, os primeiros 128 pontos de código do Unicode, então é um pequeno subconjunto do padrão maior.

Como o UTF-8 se relaciona com a ASCII?

O UTF-8 é uma codificação para Unicode que armazena os pontos de código de 0 a 127 em um único byte idêntico à ASCII. Isso faz de cada arquivo ASCII um arquivo UTF-8 válido, e é por isso que o UTF-8 é retrocompatível e domina a web moderna.