Os cento e vinte e oito códigos, gerados

Tabela ASCII

A tabela ASCII completa, de zero a cento e vinte e sete, com decimal, hexadecimal, binário e o nome de cada caractere de controle. Os 95 caracteres imprimíveis vêm direto da tabela de caracteres do próprio programa, não de uma lista digitada; os 33 nomes de controle são os registrados no banco de dados de caracteres do Unicode.

Como ler a tabela

Cada linha é um código. A primeira coluna é o número decimal, que é o que se vê em livros e em mensagens de erro. Ao lado ficam o mesmo número em hexadecimal, que é como ele aparece em ferramentas de programação, e em binário, que é como ele existe na memória. A letra A maiúscula é o código 65, 41 em hexadecimal e 01000001 em binário; a minúscula é 97, trinta e dois a mais, e a diferença entre as duas é um único bit. O dígito zero é o código 48, e não zero: a tabela numera símbolos, não valores.

Os trinta e dois primeiros códigos, de zero a trinta e um, e o último, 127, não imprimem nada: são os 33 caracteres de controle. São comandos para o aparelho que recebia o texto, quase sempre um teletipo: avançar a linha, voltar o carro, tocar a campainha, apagar. Eles aparecem na tabela com a abreviação usada desde os anos sessenta e o nome completo, que é o nome que o padrão Unicode registra para o mesmo código. O código zero,NUL, marca o fim de um texto em várias linguagens de programação até hoje.

O que a tabela não tem é qualquer letra fora do alfabeto inglês. Cedilha, til e acentos ficaram para as extensões de cada país e, mais tarde, para o Unicode. A página de código binário mostra como o UTF-8 encaixa esses caracteres sem mudar um único código desta tabela.

Tabela

128 códigos, gerados pelo pacote
DecHexBinárioCaractereNome
00000000000NULNULL
10100000001SOHSTART OF HEADING
20200000010STXSTART OF TEXT
30300000011ETXEND OF TEXT
40400000100EOTEND OF TRANSMISSION
50500000101ENQENQUIRY
60600000110ACKACKNOWLEDGE
70700000111BELALERT
80800001000BSBACKSPACE
90900001001HTCHARACTER TABULATION
100A00001010LFLINE FEED
110B00001011VTLINE TABULATION
120C00001100FFFORM FEED
130D00001101CRCARRIAGE RETURN
140E00001110SOSHIFT OUT
150F00001111SISHIFT IN
161000010000DLEDATA LINK ESCAPE
171100010001DC1DEVICE CONTROL ONE
181200010010DC2DEVICE CONTROL TWO
191300010011DC3DEVICE CONTROL THREE
201400010100DC4DEVICE CONTROL FOUR
211500010101NAKNEGATIVE ACKNOWLEDGE
221600010110SYNSYNCHRONOUS IDLE
231700010111ETBEND OF TRANSMISSION BLOCK
241800011000CANCANCEL
251900011001EMEND OF MEDIUM
261A00011010SUBSUBSTITUTE
271B00011011ESCESCAPE
281C00011100FSINFORMATION SEPARATOR FOUR
291D00011101GSINFORMATION SEPARATOR THREE
301E00011110RSINFORMATION SEPARATOR TWO
311F00011111USINFORMATION SEPARATOR ONE
322000100000SPSPACE
332100100001!
342200100010"
352300100011#
362400100100$
372500100101%
382600100110&
392700100111'
402800101000(
412900101001)
422A00101010*
432B00101011+
442C00101100,
452D00101101-
462E00101110.
472F00101111/
4830001100000
4931001100011
5032001100102
5133001100113
5234001101004
5335001101015
5436001101106
5537001101117
5638001110008
5739001110019
583A00111010:
593B00111011;
603C00111100<
613D00111101=
623E00111110>
633F00111111?
644001000000@
654101000001A
664201000010B
674301000011C
684401000100D
694501000101E
704601000110F
714701000111G
724801001000H
734901001001I
744A01001010J
754B01001011K
764C01001100L
774D01001101M
784E01001110N
794F01001111O
805001010000P
815101010001Q
825201010010R
835301010011S
845401010100T
855501010101U
865601010110V
875701010111W
885801011000X
895901011001Y
905A01011010Z
915B01011011[
925C01011100\
935D01011101]
945E01011110^
955F01011111_
966001100000`
976101100001a
986201100010b
996301100011c
1006401100100d
1016501100101e
1026601100110f
1036701100111g
1046801101000h
1056901101001i
1066A01101010j
1076B01101011k
1086C01101100l
1096D01101101m
1106E01101110n
1116F01101111o
1127001110000p
1137101110001q
1147201110010r
1157301110011s
1167401110100t
1177501110101u
1187601110110v
1197701110111w
1207801111000x
1217901111001y
1227A01111010z
1237B01111011{
1247C01111100|
1257D01111101}
1267E01111110~
1277F01111111DELDELETE

Os nomes de controle e de onde vêm

As abreviações de controle são as da própria tabela ASCII de mil novecentos e sessenta e sete, as mesmas que aparecem em qualquer manual de terminal. O nome por extenso ao lado é o registrado no banco de dados do Unicode para o mesmo código. Em um caso a abreviação histórica e a do Unicode diferem, e a tabela mantém a histórica, que é a que os leitores procuram.

Perguntas frequentes

O que é a tabela ASCII?

É o acordo de mil novecentos e sessenta e três que deu um número de zero a cento e vinte e sete às letras do alfabeto inglês, aos dígitos, à pontuação e a 33 códigos de controle. A primeira versão trazia só as maiúsculas; as minúsculas entraram na revisão de mil novecentos e sessenta e sete, que é a tabela desta página. A letra A maiúscula é o código 65, a minúscula é 97, o espaço é 32. Quase toda codificação de texto usada hoje começa por esses cento e vinte e oito códigos.

O que são os caracteres de controle?

Os 33 códigos que não imprimem nada e sim comandam o aparelho: LF (LINE FEED) muda de linha, CR (CARRIAGE RETURN) volta ao início da linha, ESC (ESCAPE) começa uma sequência de comando, BEL (ALERT) tocava a campainha do terminal. Os nomes vêm dos teletipos e das fitas de papel dos anos sessenta, e alguns continuam em uso todos os dias, como a quebra de linha.

Onde ficam as letras acentuadas?

Fora da tabela. O ASCII tem só as letras do inglês, e cada país inventou uma extensão diferente para o restante do byte, o que produziu o famoso texto com caracteres trocados. O Unicode resolveu isso numerando todos os caracteres de todas as escritas, e o UTF-8 escreve esses números de modo que os cento e vinte e oito códigos ASCII fiquem exatamente iguais. A página de código binário mostra como um acento vira dois bytes.

Como converto uma letra para o código ASCII?

Procure a letra na tabela e leia o número decimal, o hexadecimal ou o binário, conforme o que você precisa. A caixa no alto faz isso para um texto inteiro: Oi com ponto de exclamação vira 79 105 33, um código por caractere. Caracteres fora da tabela, como letras acentuadas, ficam de fora e a caixa avisa.