Skip to content

Tabela ASCII e conversor de caracteres

A tabela ASCII completa: 128 caracteres em decimal, hexadecimal, octal e binário, mais um conversor texto ↔ ASCII. Cada caractere de controle traz seu escape, sua notação caret e onde você o encontra.

Sem rastreamento Roda no navegador Grátis

Tudo roda no seu navegador — o que você digita nunca é enviado, registrado ou armazenado.

Texto e código ASCII, nos dois sentidos

A tabela ASCII completa (0–127)

128 / 128
Dec Hex Oct Binário Car. Nome Escape Caret HTML Onde você encontra
0 00 000 00000000 NUL Null \0 ^@ � Terminador de string em C; separa nomes de arquivo no find -print0 e no xargs -0; faz o grep dizer Binary file matches.
1 01 001 00000001 SOH Start of Heading ^A  O protocolo FIX usa este byte como separador de campos, e por isso as mensagens FIX parecem uma linha só, emendada.
2 02 002 00000010 STX Start of Text ^B  Cabeçalho de quadro em protocolos de porta serial, PDV e leitor de código de barras; tecla de prefixo Ctrl+B do tmux.
3 03 003 00000011 ETX End of Text ^C  Ctrl+C envia este byte; a disciplina de linha do tty o transforma em SIGINT, então o seu programa nunca chega a vê-lo.
4 04 004 00000100 EOT End of Transmission ^D  Ctrl+D envia a linha de entrada atual; quando a linha está vazia, a leitura retorna 0 bytes, e é isso que é o EOF.
5 05 005 00000101 ENQ Enquiry ^E  Handshakes de enlaces antigos; alguns terminais respondem a ele com uma string de identificação.
6 06 006 00000110 ACK Acknowledge ^F  Emparelhado com ENQ e NAK nos antigos protocolos de enlace; ainda aparece em equipamentos seriais industriais.
7 07 007 00000111 BEL Bell \a ^G  printf '\a' toca a campainha; hoje é mais comum que ele termine uma sequência OSC, como definir o título da janela.
8 08 010 00001000 BS Backspace \b ^H  Apagamento em barras de progresso. Atenção: a maioria dos terminais envia 0x7F no Backspace, e não este byte.
9 09 011 00001001 HT Character Tabulation \t ^I 	 As receitas de um Makefile precisam começar com TAB de verdade; o gofmt indenta com TAB; Tab e Ctrl+I são o mesmo byte.
10 0A 012 00001010 LF Line Feed \n ^J 
 Quebra de linha no Unix e no macOS; o core.autocrlf do git converte entre este byte e o CRLF.
11 0B 013 00001011 VT Line Tabulation \v ^K  Quase extinto, mas ainda conta como quebra de linha: splitlines() quebra nele e split("\n") não.
12 0C 014 00001100 FF Form Feed \f ^L  Salto de página em impressora; Ctrl+L limpa o terminal; o Emacs usa ele como marca de seção no código-fonte.
13 0D 015 00001101 CR Carriage Return \r ^M 
 A primeira metade do CRLF do Windows; aparece como ^M no git diff; causa bad interpreter: /bin/bash^M.
14 0E 016 00001110 SO Shift Out ^N  Troca para o conjunto de caracteres alternativo G1 no ISO 2022; envolve regiões de dois bytes em mainframes EBCDIC.
15 0F 017 00001111 SI Shift In ^O  Volta para o conjunto de caracteres G0 padrão, emparelhado com o SO.
16 10 020 00010000 DLE Data Link Escape ^P  Prefixo de escape do byte stuffing em protocolos binários antigos.
17 11 021 00010001 DC1 Device Control One ^Q  XON — retomada do controle de fluxo por software; Ctrl+Q descongela a saída do terminal.
18 12 022 00010010 DC2 Device Control Two ^R  Sem significado moderno fixo. O Ctrl+R do shell é um atalho do readline, sem relação com este código.
19 13 023 00010011 DC3 Device Control Three ^S  XOFF — pausa do controle de fluxo por software. Apertar Ctrl+S sem querer é a causa mais comum de um terminal congelado.
20 14 024 00010100 DC4 Device Control Four ^T  Sem significado moderno fixo; no BSD e no macOS, Ctrl+T é a tecla de status do tty.
21 15 025 00010101 NAK Negative Acknowledge ^U  Ctrl+U apaga a linha inteira — isso é a configuração kill do tty, não o sentido original deste código.
22 16 026 00010110 SYN Synchronous Idle ^V  Ctrl+V é o lnext: aperte ele e depois Tab para digitar um TAB de verdade no bash sem disparar o autocompletar.
23 17 027 00010111 ETB End of Transmission Block ^W  Ctrl+W apaga a palavra anterior — a configuração werase do tty.
24 18 030 00011000 CAN Cancel ^X  A ECMA-48 usa este byte para abortar uma sequência de controle inacabada; os terminais descartam a sequência em análise.
25 19 031 00011001 EM End of Medium ^Y  Hoje quase não se usa; no BSD e no macOS, Ctrl+Y é a suspensão adiada.
26 1A 032 00011010 SUB Substitute ^Z  Marca de fim de arquivo nos textos do CP/M e do DOS, e por isso os consoles do Windows encerram a entrada com Ctrl+Z.
27 1B 033 00011011 ESC Escape ^[  Início de toda sequência de escape ANSI: \033[0m reseta a cor e \033[2J limpa a tela. O Ctrl+[ também envia ele.
28 1C 034 00011100 FS File Separator ^\  O encapsulamento MLLP do HL7 v2 usa este byte como terminador de bloco; Ctrl+\ envia SIGQUIT.
29 1D 035 00011101 GS Group Separator ^]  Nos códigos de barras GS1, o separador FNC1 é este byte — o delimitador invisível que o seu leitor emite.
30 1E 036 00011110 RS Record Separator ^^  As JSON Text Sequences da RFC 7464 prefixam cada registro com ele. Um dos poucos usos modernos ainda vivos.
31 1F 037 00011111 US Unit Separator ^_  Separador de campos em texto estruturado, mais seguro que uma vírgula porque nunca aparece no conteúdo.
32 20 040 00100000 Space  
33 21 041 00100001 Exclamation Mark !
34 22 042 00100010 Quotation Mark "
35 23 043 00100011 Number Sign #
36 24 044 00100100 Dollar Sign $
37 25 045 00100101 Percent Sign %
38 26 046 00100110 Ampersand &
39 27 047 00100111 Apostrophe '
40 28 050 00101000 Left Parenthesis (
41 29 051 00101001 Right Parenthesis )
42 2A 052 00101010 Asterisk *
43 2B 053 00101011 Plus Sign +
44 2C 054 00101100 Comma ,
45 2D 055 00101101 Hyphen-Minus -
46 2E 056 00101110 Full Stop .
47 2F 057 00101111 Solidus /
48 30 060 00110000 Digit Zero 0
49 31 061 00110001 Digit One 1
50 32 062 00110010 Digit Two 2
51 33 063 00110011 Digit Three 3
52 34 064 00110100 Digit Four 4
53 35 065 00110101 Digit Five 5
54 36 066 00110110 Digit Six 6
55 37 067 00110111 Digit Seven 7
56 38 070 00111000 Digit Eight 8
57 39 071 00111001 Digit Nine 9
58 3A 072 00111010 Colon :
59 3B 073 00111011 Semicolon &#59;
60 3C 074 00111100 Less-Than Sign <
61 3D 075 00111101 Equals Sign =
62 3E 076 00111110 Greater-Than Sign >
63 3F 077 00111111 Question Mark ?
64 40 100 01000000 Commercial At @
65 41 101 01000001 Latin Capital Letter A A
66 42 102 01000010 Latin Capital Letter B B
67 43 103 01000011 Latin Capital Letter C C
68 44 104 01000100 Latin Capital Letter D D
69 45 105 01000101 Latin Capital Letter E E
70 46 106 01000110 Latin Capital Letter F F
71 47 107 01000111 Latin Capital Letter G G
72 48 110 01001000 Latin Capital Letter H H
73 49 111 01001001 Latin Capital Letter I I
74 4A 112 01001010 Latin Capital Letter J J
75 4B 113 01001011 Latin Capital Letter K K
76 4C 114 01001100 Latin Capital Letter L L
77 4D 115 01001101 Latin Capital Letter M M
78 4E 116 01001110 Latin Capital Letter N N
79 4F 117 01001111 Latin Capital Letter O O
80 50 120 01010000 Latin Capital Letter P P
81 51 121 01010001 Latin Capital Letter Q Q
82 52 122 01010010 Latin Capital Letter R R
83 53 123 01010011 Latin Capital Letter S S
84 54 124 01010100 Latin Capital Letter T T
85 55 125 01010101 Latin Capital Letter U U
86 56 126 01010110 Latin Capital Letter V V
87 57 127 01010111 Latin Capital Letter W W
88 58 130 01011000 Latin Capital Letter X X
89 59 131 01011001 Latin Capital Letter Y Y
90 5A 132 01011010 Latin Capital Letter Z Z
91 5B 133 01011011 Left Square Bracket [
92 5C 134 01011100 Reverse Solidus \
93 5D 135 01011101 Right Square Bracket ]
94 5E 136 01011110 Circumflex Accent ^
95 5F 137 01011111 Low Line _
96 60 140 01100000 Grave Accent `
97 61 141 01100001 Latin Small Letter A a
98 62 142 01100010 Latin Small Letter B b
99 63 143 01100011 Latin Small Letter C c
100 64 144 01100100 Latin Small Letter D d
101 65 145 01100101 Latin Small Letter E e
102 66 146 01100110 Latin Small Letter F f
103 67 147 01100111 Latin Small Letter G g
104 68 150 01101000 Latin Small Letter H h
105 69 151 01101001 Latin Small Letter I i
106 6A 152 01101010 Latin Small Letter J j
107 6B 153 01101011 Latin Small Letter K k
108 6C 154 01101100 Latin Small Letter L l
109 6D 155 01101101 Latin Small Letter M m
110 6E 156 01101110 Latin Small Letter N n
111 6F 157 01101111 Latin Small Letter O o
112 70 160 01110000 Latin Small Letter P p
113 71 161 01110001 Latin Small Letter Q q
114 72 162 01110010 Latin Small Letter R r
115 73 163 01110011 Latin Small Letter S s
116 74 164 01110100 Latin Small Letter T t
117 75 165 01110101 Latin Small Letter U u
118 76 166 01110110 Latin Small Letter V v
119 77 167 01110111 Latin Small Letter W w
120 78 170 01111000 Latin Small Letter X x
121 79 171 01111001 Latin Small Letter Y y
122 7A 172 01111010 Latin Small Letter Z z
123 7B 173 01111011 Left Curly Bracket {
124 7C 174 01111100 Vertical Line |
125 7D 175 01111101 Right Curly Bracket }
126 7E 176 01111110 Tilde ~
127 7F 177 01111111 DEL Delete ^?  O que a sua tecla Backspace realmente envia na maioria dos terminais. O nome vem da fita perfurada: sete furos.

A coluna binária é preenchida até 8 bits para facilitar a leitura. O ASCII em si é um código de 7 bits — o bit mais alto é sempre 0, e é exatamente isso que permite ao UTF-8 continuar retrocompatível com ele.

E de 128 a 255?

O ASCII não define nada entre 128 e 255. «ASCII estendido» não é o nome de norma nenhuma — é um termo solto para toda uma família de codificações de 8 bits. O mesmo byte é um caractere diferente em cada uma delas:

Byte ISO-8859-1 Windows-1252 CP437 CP866
0x80 U+0080 Controle C1 (invisível) Ç А
0x93 U+0093 Controle C1 (invisível) ô У
0xB0 ° °
0xE9 é é Θ щ
0xFF ÿ ÿ U+00A0 U+00A0
As classificações de caracteres são cruzadas com as próprias categorias do Unicode na hora dos testes, e o mapeamento do Windows-1252 é verificado byte a byte contra o decodificador da plataforma. — Equipe de engenharia da Go-Tools · Sep 2, 2026

Cada valor da tabela é gerado por um único motor que tanto o servidor quanto o navegador executam, então o que um rastreador lê e aquilo com que você interage nunca podem divergir. As diferenças de escape entre linguagens foram verificadas compilando e executando o código em cada uma delas, não citadas de memória.

Referência rápida

Qual é o código ASCII do A?

A = 65 O `A` maiúsculo é 65 em decimal, `0x41` em hexadecimal, `101` em octal e `01000001` em binário. O `a` minúsculo é 97 — exatamente 32 a mais, o que é um único bit.

Quantos caracteres o ASCII tem?

128 128, numerados de 0 a 127. Isto é: 32 caracteres de controle, 95 caracteres gráficos contando o espaço, e o DEL.

O que é o ASCII 0?

0 = NUL NUL, o caractere nulo. Ele termina as strings em C, separa nomes de arquivo no `find -print0` e faz o `grep` tratar um arquivo como binário.

Qual byte é a quebra de linha?

LF = 10, CR = 13 O avanço de linha (LF) é 10 (`0x0A`, `\n`). O retorno de carro (CR) é 13 (`0x0D`, `\r`). Os finais de linha do Windows são os dois, com o CR primeiro.

O que é ASCII?

O ASCII é uma codificação de caracteres de 7 bits — 128 pontos de código, numerados de 0 a 127, e nada além disso. Foi publicado pela primeira vez como ASA X3.4-1963 e a forma atual dele é a ANSI X3.4-1986; a RFC 20 descreve o uso dele na internet e foi elevada a padrão de internet STD 80 em 2015. A primeiríssima versão não tinha nenhuma letra minúscula; elas chegaram na revisão de 1967. Tudo o que está acima de 127 pertence a alguma outra codificação, não ao ASCII.

0x00-0x1F   32 C0 control characters
0x20         1 space (a graphic character, not a control)
0x21-0x7E   94 printable graphic characters
0x7F         1 DEL (a control character, but not part of C0)
            ---
            128 total

O que esta tabela te dá

As quatro bases lado a lado

Decimal, hexadecimal, octal e binário de 8 bits para cada um dos 128 pontos de código, com aquele zero à esquerda que lembra que o ASCII é, na verdade, de 7 bits.

As sequências de escape por linguagem

A coluna \0 \a \b \t \n \v \f \r mais as diferenças que de fato quebram builds — o JavaScript não tem \a, o Java não tem nem \a nem \v, e \e é uma extensão GNU em vez de ISO C.

Notação caret

A coluna de ^@ até ^? e a única regra que cobre os 33 caracteres de controle: fazer o XOR do byte com 0x40. Não é somar nem subtrair — é XOR.

Onde você encontra de verdade cada caractere de controle

Não só «SOH — start of heading», mas que as mensagens do protocolo FIX o usam como separador de campos, que 0x1D é o separador invisível que o seu leitor de código de barras emite, e que o Ctrl+S que congela o seu terminal é XOFF.

Um conversor que se recusa a adivinhar

Quem escolhe a base é você. Bytes acima de 127 são recusados com uma nota sobre como eles seriam lidos em Windows-1252 e em ISO-8859-1, em vez de passarem por ASCII.

Os caracteres de controle continuam visíveis

NUL, TAB e CR não têm glifo, então a pré-visualização os mostra com os Control Pictures do Unicode. O botão de copiar continua te entregando os bytes de verdade.

Codificações relacionadas

ISO/IEC 8859-1 (Latin-1)

8 bits, um byte

Mantém 0–127 idêntico ao ASCII e define 96 caracteres gráficos de 0xA0 até 0xFF. A faixa 0x800x9F fica para os caracteres de controle C1, que são invisíveis.

Windows-1252

8 bits, um byte

Um superconjunto do ISO-8859-1 cuja única diferença está em 0x800x9F, onde ele coloca 27 caracteres imprimíveis e deixa 5 indefinidos. Os navegadores usam ele sempre que uma página se declara ISO-8859-1.

CP437

8 bits, um byte

A página de código original do IBM PC. A metade alta dela é feita de letras acentuadas, letras gregas e caracteres de desenho de caixas — são essas as tabelas que aparecem nos artigos que prometem 256 caracteres ASCII.

UTF-8

Variável, de 1 a 4 bytes

Codifica todo o Unicode mantendo cada byte ASCII idêntico byte a byte. É retrocompatível com o US-ASCII, mas não com nenhuma das páginas de código de 8 bits acima.

Exemplos

De texto para códigos decimais

Hello
72 101 108 108 111

Cada caractere vira o seu ponto de código decimal. As maiúsculas vão de 65 a 90 e as minúsculas de 97 a 122 — exatamente 32 de diferença, e é por isso que inverter o bit 5 troca a caixa.

Os mesmos códigos lidos em duas bases

41 42 43
hex -> ABC     decimal -> )*+

É por isso que o conversor nunca adivinha a base por você. As duas leituras são válidas; só você sabe qual delas queria.

Os caracteres de controle sobrevivem à ida e volta

9 10 13 0
TAB, LF, CR, NUL

Eles são invisíveis na caixa de saída, então a linha de pré-visualização os mostra com os Control Pictures do Unicode. O botão de copiar continua copiando os bytes de verdade, não os substitutos.

Bytes acima de 127 são recusados, com explicação

233
Outside ASCII (0-127)

233 não é um código ASCII. A ferramenta avisa que ele é lido como é tanto em Windows-1252 quanto em ISO-8859-1, mas não vai fazer isso passar por ASCII.

Como usar

  1. 1

    Escolha a base

    Decimal, hexadecimal, octal ou binária. Faça isso primeiro — os mesmos dígitos são decodificados de forma diferente em cada base e a ferramenta se recusa de propósito a adivinhar.

  2. 2

    Digite em qualquer um dos lados

    Texto à esquerda, códigos à direita. Em qualquer lado que você digite, o outro é atualizado.

  3. 3

    Leia os avisos

    Os caracteres fora de 0–127 aparecem listados com o ponto de código e os bytes UTF-8, em vez de serem descartados em silêncio ou virarem pontos de interrogação.

  4. 4

    Use a tabela como referência

    Filtre pelos caracteres de controle, busque por código ou por nome, e clique em qualquer caractere para copiá-lo.

Erros que vale a pena conhecer

Afirmar que o ASCII tem 256 caracteres

O ASCII para em 127. Tudo além disso pertence a uma página de código de 8 bits específica, que precisa ser nomeada. O Python te diz isso na lata se você pedir para codificar uma letra acentuada como ASCII.

✗ Incorreto
'cafe\u00e9'.encode('ascii')  # UnicodeEncodeError: ordinal not in range(128)
✓ Correto
'cafe\u00e9'.encode('utf-8')   # b'cafe\xc3\xa9'

Supor que toda linguagem tem os mesmos escapes

O JavaScript não tem o escape \a. Em vez de falhar, ele descarta a barra invertida e te deixa com a letra, e o modo estrito não ajuda.

✗ Incorreto
"\a".charCodeAt(0)   // 97 - that is the letter 'a', not BEL
✓ Correto
"\x07".charCodeAt(0) // 7 - BEL

Explicar a notação caret como uma soma

Somar 0x40 funciona para a faixa C0 e depois quebra no DEL, onde você teria de subtrair. O XOR é a regra única que cobre os 33.

✗ Incorreto
caret = chr(code + 0x40)   # 0x7F + 0x40 overflows past the table
✓ Correto
caret = chr(code ^ 0x40)   # 0x00 -> @, 0x1B -> [, 0x7F -> ?

Quando você precisa disto

Ler um dump hexadecimal ou um trace de protocolo
Você tem bytes e precisa saber quais são imprimíveis, quais são separadores e quais são códigos de controle sobre os quais o terminal está agindo caladinho.
Depurar um arquivo que se comporta de forma estranha
Um CR perdido no fim de cada linha, um NUL que faz o grep considerar o arquivo binário, ou um TAB onde um Makefile exigia um.
Escrever um parser ou um validador
Decidir quais faixas de bytes aceitar e acertar os limites — 0x210x7E para os caracteres gráficos, 0x20 para o espaço, 0x7F para o DEL.
Explicar um bug de codificação
Mostrar a um colega por que o mesmo byte aparece como três caracteres diferentes, dependendo da página de código que quem leu presumiu.

Detalhes técnicos

ASCII, Unicode e UTF-8
Os primeiros 128 pontos de código do Unicode, de U+0000 a U+007F, correspondem um a um ao ASCII. O UTF-8 os codifica como bytes únicos 0x000x7F, com o bit mais alto em 0. A propriedade que realmente importa é a terceira: todo byte de uma sequência UTF-8 de vários bytes tem o bit mais alto em 1, então um byte na faixa 0–127 nunca pode fazer parte de um caractere não ASCII. É isso que torna seguro varrer UTF-8 byte a byte procurando /, \0 ou \n.
O oitavo bit
O ASCII define um código de 7 bits; guardar um caractere por byte de 8 bits é convenção, e historicamente esse bit sobrando costumava ser um bit de paridade. Os transportes de e-mail que só garantiam transparência de 7 bits são a razão de existirem o Base64 e o quoted-printable.
Por que o alfabeto está disposto assim
Os dígitos 09 ficam em 0x300x39, de modo que o nibble baixo é o próprio valor. A é 0x41 e a é 0x61 — um único bit de diferença, então c | 0x20 deixa minúsculo e c & 0xDF deixa maiúsculo. Mas só para as letras: '_' | 0x200x7F, que é o DEL, e '[' | 0x20{.
As variantes nacionais e o problema do 0x5C
A ISO/IEC 646 permitia trocar 12 pontos de código conforme o país. A JIS X 0201 japonesa colocou um símbolo de iene em 0x5C e a KS X 1003 coreana colocou ali um símbolo de won — é por isso que o Windows japonês mostra os caminhos com um símbolo de iene enquanto o byte continua sendo 0x5C. Em Shift_JIS fica pior: o segundo byte de um caractere de dois bytes pode ser ele mesmo 0x5C, e os caracteres hyou, so, juu, nou, kou e bou terminam todos nele, então um tratamento ingênuo de barras invertidas os parte ao meio.

Como fazer certo

Diga sempre qual é a página de código
«ASCII estendido» não diz nada a quem lê. Diga Windows-1252, ou ISO-8859-1, ou CP437 — o mesmo byte é um caractere diferente em cada uma.
Diga US-ASCII quando for isso que você quer dizer
Esse é o nome registrado na IANA. charset=ascii não é, e em um navegador charset=ISO-8859-1 vai te dar na verdade Windows-1252, porque o WHATWG Encoding Standard mapeia o rótulo assim.
Nunca adivinhe a base pelo usuário
Se a sua ferramenta ou o seu parser decidir em silêncio que 41 é hexadecimal, vai errar em cerca de metade das vezes e a falha será silenciosa.
Itere por ponto de código, não por unidade UTF-16
"A" + clave de sol + caractere chinês tem .length === 4, mas só três caracteres. Use [...str] ou codePointAt, senão a sua mensagem de «caractere não suportado» vai reportar os emoji como duas metades quebradas.

Perguntas frequentes

Quantos caracteres o ASCII tem?
128. O ASCII é um código de 7 bits, então define exatamente os pontos de código de 0 a 127: 32 caracteres de controle C0, 95 caracteres gráficos contando o espaço, e o DEL. Os artigos intitulados «tabela ASCII completa (256 caracteres)» estão mostrando alguma página de código de 8 bits específica — normalmente CP437 ou Windows-1252 — e não ASCII.
O que é o ASCII estendido?
Nada, falando com rigor. «ASCII estendido» não é o nome de norma nenhuma; é um termo solto para toda uma família de codificações de 8 bits que mantêm 0–127 igual e definem 128–255 cada uma do seu jeito. O byte 0xE9 é é em ISO-8859-1, a letra grega Θ em CP437 e uma letra cirílica em CP866. Sem dizer qual é a página de código, a pergunta não tem resposta.
Windows-1252 é a mesma coisa que ISO-8859-1?
São idênticos de 0xA0 até 0xFF e completamente diferentes de 0x80 até 0x9F. O ISO-8859-1 deixa essa faixa para os caracteres de controle C1, que são invisíveis; o Windows-1252 coloca ali 27 caracteres imprimíveis — o símbolo do euro, as aspas curvas, o travessão e o meio-travessão — e deixa 5 posições indefinidas. É por isso que uma aspa curva copiada de um editor de textos vira um caractere de controle invisível assim que passa por algo que é ISO-8859-1 de verdade.
O DEL é um caractere de controle?
É. O Unicode classifica U+007F como Cc, e o iscntrl(127) do C é verdadeiro. Ele apenas não faz parte do conjunto C0, que é estritamente 0x000x1F. Está no fim da tabela por causa da fita perfurada: 0x7F são sete furos perfurados e, uma vez feito um furo, não dá para desfazê-lo, então «todos os furos perfurados» era o único jeito de marcar um caractere como apagado.
O espaço é um caractere de controle?
Não, e muitas tabelas ASCII erram nisso. O Unicode classifica o espaço (0x20) como Zs, separador de espaço, que é um caractere gráfico. Só 0x000x1F e 0x7F são caracteres de controle.
Se o ASCII é de 7 bits, por que a coluna binária mostra 8?
Porque o byte é a unidade em que tudo é realmente armazenado — o bit mais alto simplesmente vale sempre 0. Esse preenchimento não é enfeite: justamente porque o ASCII nunca usa o oitavo bit, o UTF-8 pôde tomá-lo como a marca de «isto faz parte de uma sequência de vários bytes», e é isso que torna o UTF-8 retrocompatível com o ASCII.
Todas as linguagens escrevem os caracteres de controle do mesmo jeito?
Não, e as diferenças mordem. \a (campainha) é padrão em C e em Python, mas o JavaScript não tem esse escape — '\a' vira silenciosamente a letra a, sem erro nem em modo estrito. O Java recusa tanto \a quanto \v. O Go recusa \0 porque os escapes octais dele precisam ter exatamente três dígitos, então se escreve \000. E \e para o ESC é uma extensão GNU, não ISO C.
O que significa ^M em um diff ou no vim?
É um retorno de carro, o byte 13. A notação caret escreve um caractere de controle fazendo o XOR do valor dele com 0x40, então CR (0x0D) vira ^M e ESC (0x1B) vira ^[. Ver ^M no fim de cada linha significa que o arquivo tem finais de linha CRLF do Windows; ver bad interpreter: /bin/bash^M significa que um script de shell trouxe esses finais junto.

Ferramentas relacionadas

Ver todas as ferramentas →