Tabela ASCII
ASCII significa American Standard Code for Information Interchange.
É uma tabela que mapeia números para caracteres e sinais de controle.
Ela é uma das bases históricas da computação, porque mostra de forma muito clara uma ideia central:
texto também é número.
Quando você entende ASCII, fica mais fácil entender:
- por que
'A'vale65 - por que
'0'vale48 - como strings são armazenadas
- como parsing e serialização funcionam
- por que bytes podem ser lidos como texto ou como número
Se você estiver lendo a página de Tipos de Dados, esta tabela é o complemento natural.
Como ler a tabela
Seção intitulada “Como ler a tabela”DEC: valor decimalHEX: valor hexadecimalBIN: valor binário em 8 bitsCHAR: caractere correspondente, quando existir forma imprimívelNAME: nome ou abreviação do código
Códigos de controle: 0 a 31 e 127
Seção intitulada “Códigos de controle: 0 a 31 e 127”DEC HEX BIN CHAR NAME0 00 00000000 NUL1 01 00000001 SOH2 02 00000010 STX3 03 00000011 ETX4 04 00000100 EOT5 05 00000101 ENQ6 06 00000110 ACK7 07 00000111 BEL8 08 00001000 BS9 09 00001001 TAB10 0A 00001010 LF11 0B 00001011 VT12 0C 00001100 FF13 0D 00001101 CR14 0E 00001110 SO15 0F 00001111 SI16 10 00010000 DLE17 11 00010001 DC118 12 00010010 DC219 13 00010011 DC320 14 00010100 DC421 15 00010101 NAK22 16 00010110 SYN23 17 00010111 ETB24 18 00011000 CAN25 19 00011001 EM26 1A 00011010 SUB27 1B 00011011 ESC28 1C 00011100 FS29 1D 00011101 GS30 1E 00011110 RS31 1F 00011111 US127 7F 01111111 DELO que esses controles faziam
Seção intitulada “O que esses controles faziam”Esses códigos nasceram para comunicação com teletipos, terminais e impressoras.
Alguns ainda aparecem muito:
TAB(9): tabulaçãoLF(10): line feed, quebra de linha em vários sistemasCR(13): carriage returnESC(27): escape
Caracteres imprimíveis: 32 a 47
Seção intitulada “Caracteres imprimíveis: 32 a 47”DEC HEX BIN CHAR NAME32 20 00100000 SP SPACE33 21 00100001 ! EXCLAMATION MARK34 22 00100010 " QUOTATION MARK35 23 00100011 # NUMBER SIGN36 24 00100100 $ DOLLAR SIGN37 25 00100101 % PERCENT SIGN38 26 00100110 & AMPERSAND39 27 00100111 ' APOSTROPHE40 28 00101000 ( LEFT PARENTHESIS41 29 00101001 ) RIGHT PARENTHESIS42 2A 00101010 * ASTERISK43 2B 00101011 + PLUS SIGN44 2C 00101100 , COMMA45 2D 00101101 - HYPHEN-MINUS46 2E 00101110 . FULL STOP47 2F 00101111 / SLASHDígitos e pontuação: 48 a 64
Seção intitulada “Dígitos e pontuação: 48 a 64”DEC HEX BIN CHAR NAME48 30 00110000 0 DIGIT ZERO49 31 00110001 1 DIGIT ONE50 32 00110010 2 DIGIT TWO51 33 00110011 3 DIGIT THREE52 34 00110100 4 DIGIT FOUR53 35 00110101 5 DIGIT FIVE54 36 00110110 6 DIGIT SIX55 37 00110111 7 DIGIT SEVEN56 38 00111000 8 DIGIT EIGHT57 39 00111001 9 DIGIT NINE58 3A 00111010 : COLON59 3B 00111011 ; SEMICOLON60 3C 00111100 < LESS-THAN SIGN61 3D 00111101 = EQUALS SIGN62 3E 00111110 > GREATER-THAN SIGN63 3F 00111111 ? QUESTION MARK64 40 01000000 @ AT SIGNLetras maiúsculas: 65 a 90
Seção intitulada “Letras maiúsculas: 65 a 90”DEC HEX BIN CHAR NAME65 41 01000001 A LATIN CAPITAL LETTER A66 42 01000010 B LATIN CAPITAL LETTER B67 43 01000011 C LATIN CAPITAL LETTER C68 44 01000100 D LATIN CAPITAL LETTER D69 45 01000101 E LATIN CAPITAL LETTER E70 46 01000110 F LATIN CAPITAL LETTER F71 47 01000111 G LATIN CAPITAL LETTER G72 48 01001000 H LATIN CAPITAL LETTER H73 49 01001001 I LATIN CAPITAL LETTER I74 4A 01001010 J LATIN CAPITAL LETTER J75 4B 01001011 K LATIN CAPITAL LETTER K76 4C 01001100 L LATIN CAPITAL LETTER L77 4D 01001101 M LATIN CAPITAL LETTER M78 4E 01001110 N LATIN CAPITAL LETTER N79 4F 01001111 O LATIN CAPITAL LETTER O80 50 01010000 P LATIN CAPITAL LETTER P81 51 01010001 Q LATIN CAPITAL LETTER Q82 52 01010010 R LATIN CAPITAL LETTER R83 53 01010011 S LATIN CAPITAL LETTER S84 54 01010100 T LATIN CAPITAL LETTER T85 55 01010101 U LATIN CAPITAL LETTER U86 56 01010110 V LATIN CAPITAL LETTER V87 57 01010111 W LATIN CAPITAL LETTER W88 58 01011000 X LATIN CAPITAL LETTER X89 59 01011001 Y LATIN CAPITAL LETTER Y90 5A 01011010 Z LATIN CAPITAL LETTER ZSímbolos: 91 a 96
Seção intitulada “Símbolos: 91 a 96”DEC HEX BIN CHAR NAME91 5B 01011011 [ LEFT SQUARE BRACKET92 5C 01011100 \ BACKSLASH93 5D 01011101 ] RIGHT SQUARE BRACKET94 5E 01011110 ^ CIRCUMFLEX ACCENT95 5F 01011111 _ UNDERSCORE96 60 01100000 ` GRAVE ACCENTLetras minúsculas: 97 a 122
Seção intitulada “Letras minúsculas: 97 a 122”DEC HEX BIN CHAR NAME97 61 01100001 a LATIN SMALL LETTER A98 62 01100010 b LATIN SMALL LETTER B99 63 01100011 c LATIN SMALL LETTER C100 64 01100100 d LATIN SMALL LETTER D101 65 01100101 e LATIN SMALL LETTER E102 66 01100110 f LATIN SMALL LETTER F103 67 01100111 g LATIN SMALL LETTER G104 68 01101000 h LATIN SMALL LETTER H105 69 01101001 i LATIN SMALL LETTER I106 6A 01101010 j LATIN SMALL LETTER J107 6B 01101011 k LATIN SMALL LETTER K108 6C 01101100 l LATIN SMALL LETTER L109 6D 01101101 m LATIN SMALL LETTER M110 6E 01101110 n LATIN SMALL LETTER N111 6F 01101111 o LATIN SMALL LETTER O112 70 01110000 p LATIN SMALL LETTER P113 71 01110001 q LATIN SMALL LETTER Q114 72 01110010 r LATIN SMALL LETTER R115 73 01110011 s LATIN SMALL LETTER S116 74 01110100 t LATIN SMALL LETTER T117 75 01110101 u LATIN SMALL LETTER U118 76 01110110 v LATIN SMALL LETTER V119 77 01110111 w LATIN SMALL LETTER W120 78 01111000 x LATIN SMALL LETTER X121 79 01111001 y LATIN SMALL LETTER Y122 7A 01111010 z LATIN SMALL LETTER ZSímbolos finais: 123 a 126
Seção intitulada “Símbolos finais: 123 a 126”DEC HEX BIN CHAR NAME123 7B 01111011 { LEFT CURLY BRACKET124 7C 01111100 | VERTICAL LINE125 7D 01111101 } RIGHT CURLY BRACKET126 7E 01111110 ~ TILDEPadrões úteis para memorizar
Seção intitulada “Padrões úteis para memorizar”Tem alguns padrões muito úteis:
- dígitos
0a9vão de48a57 - letras maiúsculas
AaZvão de65a90 - letras minúsculas
aazvão de97a122
Diferença entre maiúscula e minúscula:
'A' = 65'a' = 97
97 - 65 = 32Esse deslocamento de 32 aparece bastante em transformações simples de texto.
Exemplos rápidos em código
Seção intitulada “Exemplos rápidos em código”#include <stdio.h>
int main(void) { char c = 'A'; printf("%d\n", c); // 65}#include <iostream>
int main() { std::cout << static_cast<int>('A') << '\n'; // 65}JavaScript
Seção intitulada “JavaScript”console.log('A'.charCodeAt(0)); // 65console.log(String.fromCharCode(65)); // Aprint(ord('A')) # 65print(chr(65)) # AUm pouco de história
Seção intitulada “Um pouco de história”ASCII foi padronizado nos anos 1960 para permitir comunicação consistente entre equipamentos diferentes.
Na época, isso era enorme.
Sem padrão, cada máquina podia inventar sua própria codificação de texto.
ASCII ajudou a unificar:
- terminais
- impressoras
- protocolos
- arquivos de texto
- sistemas operacionais
Depois vieram extensões e, mais tarde, Unicode para cobrir o resto do mundo.
ASCII hoje ainda importa?
Seção intitulada “ASCII hoje ainda importa?”Sim. Muito.
Mesmo que software moderno use Unicode, ASCII continua importante porque:
- os primeiros 128 códigos do Unicode batem com ASCII
- muitos protocolos e formatos ainda assumem ASCII em partes críticas
- debugging de bytes, logs, parsing e redes fica muito mais fácil quando você conhece esses valores
Próximas ações
Seção intitulada “Próximas ações”- Volte para Tipos de Dados
- Depois avance para Estruturas de Dados