ASCII

Origem: Wikipédia, a enciclopédia livre.
 Nota: Para a empresa japonesa, veja ASCII Corporation.

ASCII (do inglês American Standard Code for Information Interchange; "Código Padrão Americano para o Intercâmbio de Informação") é um código binário (cadeias de bits: 0s e 1s) que codifica um conjunto de 128 sinais: 95 sinais gráficos (letras do alfabeto latino, sinais de pontuação e sinais matemáticos) e 33 sinais de controle. Cada código binário possui 8 bits (equivalente a 1 byte), sendo 7 bits para o propósito de codificação e 1 bit de paridade (detecção de erro).

A codificação ASCII é usada para representar textos em computadores, equipamentos de comunicação, entre outros dispositivos que trabalham com texto. Desenvolvida a partir de 1960, grande parte das codificações de caracteres modernas a herdaram como base.

Os sinais não-imprimíveis, conhecidos como caracteres de controle, são amplamente utilizados em dispositivos de comunicação e afetam o processamento do texto.

O código ASCII é muito utilizado para conversão de Código Binário para Letras do alfabeto Maiúsculas ou minúsculas.

Sinais de controle (não-imprimíveis)

Bin

Oct Dec Hex Abrev Notação com
circunflexo
Código escape Nome
0000 0000 000 00 00 NUL ^@ \0 Nulo (inglês Null)
0000 0001 001 01 01 SOH ^A Início de cabeçalho (inglês Start of Header)
0000 0010 002 02 02 STX ^B Início de texto (inglês Start of Text)
0000 0011 003 03 03 ETX ^C Fim de texto (inglês End of Text)
0000 0100 004 04 04 EOT ^D Fim de transmissão (inglês End of Transmission)
0000 0101 005 05 05 ENQ ^E Consulta; inquirição (inglês Enquiry)
0000 0110 006 06 06 ACK ^F Confirmação (inglês Acknowledge)
0000 0111 007 07 07 BEL ^G \a Campainha; sinal sonoro (inglês Bell)
0000 1000 010 08 0 BS ^H \b Espaço atrás; retorno de 1 caractere (inglês Back-space)
0000 1001 011 09 09 HT ^I Tabulação horizontal (inglês Horizontal Tabulation)
0000 1010 012 10 0A LF ^J \n Alimentação de linha; mudança de linha; nova linha (inglês Line Feed)
0000 1011 013 11 0B VT ^K \v Tabulação vertical (inglês Vertical Tabulation)
0000 1100 014 12 0C FF ^L \f Alimentação de formulário (inglês Form Feed)
0000 1101 015 13 0D CR ^M \r Retorno do carro; retorno ao início da linha (inglês Carriage Return)
0000 1110 016 14 0E SO ^N Mover para fora; deslocamento para fora (inglês Shift Out)
0000 1111 017 15 0F SI ^O Mover para dentro; deslocamento para dentro (inglês Shift In)
0001 0000 020 16 10 DLE ^P escape do linque de dados; escape de conexão (inglês Data-Link Escape)
0001 0001 021 17 11 DC1 ^Q Controle de dispositivo 1 (inglês Device Control 1)
0001 0010 022 18 12 DC2 ^R Controle de dispositivo 2 (inglês Device Control 2)
0001 0011 023 19 13 DC3 ^S Controle de dispositivo 3 (inglês Device Control 3)
0001 0100 024 20 14 DC4 ^T Controle de dispositivo 4 (inglês Device Control 4)
0001 0101 025 21 15 NAK ^U Confirmação negativa (inglês Negative-Acknowledge)
0001 0110 026 22 16 SYN ^V Estado ocioso síncrono; espera síncrona (inglês Synchronous Idle)
0001 0111 027 23 17 ETB ^W Bloco de fim de transmissão (inglês End of Transmission Block)
0001 1000 030 24 18 CAN ^X Cancelar (inglês Cancel)
0001 1001 031 25 19 EM ^Y Fim de mídia; fim do meio (inglês End of Medium)
0001 1010 032 26 1A SUB ^Z Substituir (inglês Substitute)
0001 1011 033 27 1B ESC ^[ Escapar (inglês Escape)
0001 1100 034 28 1C FS ^\ Separador de arquivos (inglês File Separator)
0001 1101 035 29 1D GS ^] \e Separador de grupos (inglês Group Separator)
0001 1110 036 30 1E RS ^^ Separador de registros (inglês Record Separator)
0001 1111 037 31 1F US ^_ Separador de unidades (inglês Unit Separator)
0111 1111 177 127 7F DEL ^? Deletar (inglês Delete)

Sinais gráficos (imprimíveis)

Bin Oct Dec Hex Sinal
0010 0000 040 32 20 (espaço)
0010 0001 041 33 21 !
0010 0010 042 34 22 "
0010 0011 043 35 23 #
0010 0100 044 36 24 $
0010 0101 045 37 25 %
0010 0110 046 38 26 &
0010 0111 047 39 27 '
0010 1000 050 40 28 (
0010 1001 051 41 29 )
0010 1010 052 42 2A *
0010 1011 053 43 2B +
0010 1100 054 44 2C ,
0010 1101 055 45 2D -
0010 1110 056 46 2E .
0010 1111 057 47 2F /
0011 0000 060 48 30 0
0011 0001 061 49 31 1
0011 0010 062 50 32 2
0011 0011 063 51 33 3
0011 0100 064 52 34 4
0011 0101 065 53 35 5
0011 0110 066 54 36 6
0011 0111 067 55 37 7
0011 1000 070 56 38 8
0011 1001 071 57 39 9
0011 1010 072 58 3A :
0011 1011 073 59 3B ;
0011 1100 074 60 3C <
0011 1101 075 61 3D =
0011 1110 076 62 3E >
0011 1111 077 63 3F ?
Bin Oct Dec Hex Sinal
0100 0000 100 64 40 @
0100 0001 101 65 41 A
0100 0010 102 66 42 B
0100 0011 103 67 43 C
0100 0100 104 68 44 D
0100 0101 105 69 45 E
0100 0110 106 70 46 F
0100 0111 107 71 47 G
0100 1000 110 72 48 H
0100 1001 111 73 49 I
0100 1010 112 74 4A J
0100 1011 113 75 4B K
0100 1100 114 76 4C L
0100 1101 115 77 4D M
0100 1110 116 78 4E N
0100 1111 117 79 4F O
0101 0000 120 80 50 P
0101 0001 121 81 51 Q
0101 0010 122 82 52 R
0101 0011 123 83 53 S
0101 0100 124 84 54 T
0101 0101 125 85 55 U
0101 0110 126 86 56 V
0101 0111 127 87 57 W
0101 1000 130 88 58 X
0101 1001 131 89 59 Y
0101 1010 132 90 5A Z
0101 1011 133 91 5B [
0101 1100 134 92 5C \
0101 1101 135 93 5D ]
0101 1110 136 94 5E ^
0101 1111 137 95 5F _
Bin Oct Dec Hex Sinal
0110 0000 140 96 60 `
0110 0001 141 97 61 a
0110 0010 142 98 62 b
0110 0011 143 99 63 c
0110 0100 144 100 64 d
0110 0101 145 101 65 e
0110 0110 146 102 66 f
0110 0111 147 103 67 g
0110 1000 150 104 68 h
0110 1001 151 105 69 i
0110 1010 152 106 6A j
0110 1011 153 107 6B k
0110 1100 154 108 6C l
0110 1101 155 109 6D m
0110 1110 156 110 6E n
0110 1111 157 111 6F o
0111 0000 160 112 70 p
0111 0001 161 113 71 q
0111 0010 162 114 72 r
0111 0011 163 115 73 s
0111 0100 164 116 74 t
0111 0101 165 117 75 u
0111 0110 166 118 76 v
0111 0111 167 119 77 w
0111 1000 170 120 78 x
0111 1001 171 121 79 y
0111 1010 172 122 7A z
0111 1011 173 123 7B {
0111 1100 174 124 7C |
0111 1101 175 125 7D }
0111 1110 176 126 7E ~

Como gerar os caracteres ASCII imprimíveis em diferentes linguagens de programação

Assembly 8086, MS-DOS API
..start:
	mov	cx,95	;número de caracteres
	mov	dl,32	;número decimal do primeiro caractere, equivalente a 20H
	mov	ah,02	;função que imprime caractere na tela 		
ASCII:
	int	21h
	inc	dl	;próximo caractere
	loop	ASCII	;repete mostra caractere

	mov	ax,4c00h	;encerra o programa e retorna ao sistema operacional
	int	21h
AdvPl (Advance Protheus Language)
For nX := 1 To 126
	Conout(STR(nX) + ": " + CHR(nX))
Next nX
Basic
10 FOR I = 32 TO 126
20 PRINT CHR$(I)
30 NEXT I
VB.NET
For A = 50 To 200
    Console.WriteLine("Número " & Chr(A))
Next
C
#include <stdio.h>

int main(void)
{
    int i;

    for (i = 32; i <= 126; i++)
    {
        printf("%c [%d]\n", i, i);
    }

    return 0;
}
C++
#include <iostream>

using namespace std;

int main(void)
{
    for (char i = 32; i <= 126; i++)
    {
        cout << i << "[" << (int) i << "]" << endl;
    }

    return 0;
}
C# (C Sharp)
using System;
static void Main(string[] args){
      for(int i=32; i<=126; i++)
            Console.WriteLine(i+" : "+(char) i);      
      }
Calc
32
m+
<<
repeat 94
  m
  sum
  1
  equ
  m+
  m
  out
  printc
  <<
endrepeat
Delphi
procedure TForm1.Button4Click(Sender: TObject);
var 
  i: integer;
begin
  Memo1.Lines.Clear;
  for i := 32 to 283 do
    Memo1.Lines.Add('#' + IntToStr(i) + ': ' + Chr(i));
end;
GML (Game Maker Language)
texto='';
for(i=32;i<=126;i+=1) {
    texto+=chr(i)+chr(13); //adiciona o caractere e uma nova linha
}
show_message(texto); //mostra os caracteres
Java
public class Main {

    public static void main(String args[]) {

        for (int i = 32; i <= 126; i++) {

            System.out.println(i + " : " + (char) i);
        }
    }
}
Javascript
for ( var i = 32; i < 127; console.log( String.fromCharCode( i++ ) ) );
Matlab / Octave
char([32:126])
Mumps
F i=32:1:126 W !,"Caractere ",i,": ",$C(i)
Pascal
program ASCII;
var i:integer;
begin
  for i := 32 to 126 do
    writeln('Caractere ',i,': ',chr(i));
end.
Perl
print chr for 32..126;
Python
for x in range(32, 127): print (chr(x))
Php
for ( $i=32; $i <= 126; $i++ ) {
	echo chr($i);
}
R
intToUtf8(32:126)
Ruby
32.upto(126) do |x|
  puts x.chr
end
Shell script
#!/bin/bash

for i in $(seq 32 126)
do
    printf \\$(printf '%03o' "${i}")
done
OpenEdge (Progress)
def var cont  as integer.

def var texto as character format "x(10)" EXTENT 255.

do cont = 1 to 255:
    assign
        texto[cont] = string(cont) + " - " + chr(cont).
end.


disp texto
    with no-labels title "The book is on the Table ASCII "
    scrollbar-vertical.
Visual FoxPro
FOR i=32 TO 126 STEP 1
    ? "Caracter " + CHR(i)
ENDFOR