Si los computadores funcionan en binario, ¿cómo podemos almacenar letras y palabras? Para ello, asignamos números a los caracteres. Esto se conoce como codificación de caracteres.

Para entender cómo funciona la codificación de caracteres, vamos a crear un ejemplo sencillo. En primer lugar, asignemos los números 1-26 al alfabeto inglés:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
a b c d e f g h i j k l m n o p q r s t u v w x y z
Para escribir un mensaje codificado sencillo, sustituimos las letras por números. Por ejemplo, 8 5 12 12 15.
Utilizando los números, hemos construido la palabra h e l l o
.
Pero para capturar completamente el alfabeto inglés -incluyendo las letras mayúsculas y minúsculas, los números y la puntuación- necesitábamos más de 26 caracteres. Por ello, se creó el Código Estándar Americano para el Intercambio de Información (ASCII) como uno de los primeros estándares de codificación de caracteres para ordenadores.
Lo que aprenderás en este tutorial
- Una breve historia de ASCII
- Cómo traducir números decimales, binarios y hexadecimales a ASCII
Lecturas sugeridas
Hay algunos conceptos con los que es posible que quieras estar familiarizado antes de empezar a leer esta guía:
- Binario – Saber cómo un ordenador almacena los números es útil para traducir esos números a caracteres.
- Hexadecimal – El hexadecimal se utiliza a menudo para expresar los números binarios en grupos de 4 bits.
- Conoce el IDE de Arduino – Arduino es una buena manera de intentar imprimir caracteres ASCII.
Historia
La American Standards Association (ASA), ahora el American National Standards Institute (ANSI), comenzó a trabajar en ASCII el 6 de octubre de 1960. El esquema de codificación tenía su origen en los códigos telegráficos de 5 bits inventados por Émile Baudot. Finalmente, el comité se decidió por un código de 7 bits para el ASCII.
Los 7 bits permiten 128 caracteres. Aunque sólo se eligieron los caracteres y símbolos del inglés americano para este conjunto de codificación, los 7 bits suponían una minimización de los costes asociados a la transmisión de estos datos (a diferencia, por ejemplo, de los 8 bits).
Los primeros 32 caracteres de ASCII eran caracteres de control reservados. Estos caracteres se utilizaban para transmitir instrucciones especiales a otros dispositivos, como las impresoras. Por ejemplo, un usuario podía avanzar una línea, borrar un carácter y, en algunos dispositivos, hacer sonar una campana (como en el Teletype Modelo 33 ASR).
La ASA publicó la primera versión de ASCII en 1963 y la revisó en 1967. La última actualización importante de la norma se produjo en 1986. El ASCII se utilizó por primera vez con fines comerciales en la red American Telephone & Telegraph (AT&T) TeletypeWriter Exchange (TWX) network.

El 11 de marzo de 1968, el presidente Lyndon B. Johnson ordenó que todos los ordenadores del gobierno federal de EE.UU. debían ser compatibles con ASCII, consolidando así el lugar de ASCII en la historia de la informática estadounidense.
En aquella época existían otros esquemas de codificación, como el Alfabeto Telegráfico Internacional nº 2 (ITA2), pero ASCII se convirtió rápidamente en el estándar de codificación del inglés estadounidense. ASCII fue la codificación más común en Internet hasta que fue superada por UTF-8 en 2007.
Tabla ASCII
Para identificar el valor ASCII de un carácter, es habitual buscarlo en una tabla ASCII. La tabla ASCII asocia cada carácter con su valor asignado entre 0 y 127.
Caracteres de control
Los caracteres de control constituyen los primeros 32 caracteres de la tabla ASCII. Estos caracteres no están destinados a ser impresos, sino que se utilizan para enviar instrucciones de comando a otro dispositivo, como una impresora. Ten en cuenta que hemos incluido la representación octal de los caracteres ASCII en el caso de que esté trabajando con un sistema particularmente antiguo (como el PDP-8 de 12 bits).
Dec | Bin | Oct | Hex | Char | Description |
0 | 0000 0000 | 000 | 00 | NUL | null |
1 | 0000 0001 | 001 | 01 | SOH | start of heading |
2 | 0000 0010 | 002 | 02 | STX | start of text |
3 | 0000 0011 | 003 | 03 | ETX | end of text |
4 | 0000 0100 | 004 | 04 | EOT | end of transmission |
5 | 0000 0101 | 005 | 05 | ENQ | enquiry |
6 | 0000 0110 | 006 | 06 | ACK | acknowledge |
7 | 0000 0111 | 007 | 07 | BEL | bell |
8 | 0000 1000 | 010 | 08 | BS | backspace |
9 | 0000 1001 | 011 | 09 | TAB | horizontal tab |
10 | 0000 1010 | 012 | 0A | LF | line feed, new line |
11 | 0000 1011 | 013 | 0B | VT | vertical tab |
12 | 0000 1100 | 014 | 0C | FF | form feed, new page |
13 | 0000 1101 | 015 | 0D | CR | carriage return |
14 | 0000 1110 | 016 | 0E | SO | shift out |
15 | 0000 1111 | 017 | 0F | SI | shift in |
16 | 0001 0000 | 020 | 10 | DLE | data link escape |
17 | 0001 0001 | 021 | 11 | DC1 | device control 1 |
18 | 0001 0010 | 022 | 12 | DC2 | device control 2 |
19 | 0001 0011 | 023 | 13 | DC3 | device control 3 |
20 | 0001 0100 | 024 | 14 | DC4 | device control 4 |
21 | 0001 0101 | 025 | 15 | NAK | negative acknowledge |
22 | 0001 0110 | 026 | 16 | SYN | synchronous idle |
23 | 0001 0111 | 027 | 17 | ETB | end of transmission block |
24 | 0001 1000 | 030 | 18 | CAN | cancel |
25 | 0001 1001 | 031 | 19 | EM | end of medium |
26 | 0001 1010 | 032 | 1A | SUB | substitute |
27 | 0001 1011 | 033 | 1B | ESC | escape |
28 | 0001 1100 | 034 | 1C | FS | file separator |
29 | 0001 1101 | 035 | 1D | GS | group separator |
30 | 0001 1110 | 036 | 1E | RS | record separator |
31 | 0001 1111 | 037 | 1F | US | unit separator |
127 | 0111 1111 | 177 | 7F | DEL | delete |
Caracteres imprimibles
Hay 95 caracteres imprimibles en el esquema de codificación ASCII. Ten en cuenta que el carácter “espacio” denota un espacio imprimible (” “).

Inténtalo
Si quieres intentar imprimir algo utilizando la codificación ASCII, puedes probarlo utilizando Arduino. Consulta este tutorial para empezar con Arduino.
Abre el IDE de Arduino y pega el siguiente código:
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.write(0x48); // H
Serial.write(0x65); // e
Serial.write(0x6C); // l
Serial.write(0x6C); // l
Serial.write(0x6F); // o
Serial.write(0x21); // !
Serial.write(0x0A); // \n
delay(1000);
}
Ejecútalo en tu Arduino, y abre una consola Serial. Deberías ver aparecer el “Hello!” una y otra vez:

Observa que tuvimos que usar Serial.write()
en lugar de Serial.print()
. El comando write()
envía un byte crudo a través de la línea serie. print(), por otro lado, tratará de interpretar el número y enviará la versión codificada en ASCII de ese número. Por ejemplo, Serial.print(0x48)
imprimiría 72
en la consola.
Además, fíjate que hemos utilizado el carácter ASCII 0x0A
, que es el carácter de control de “avance de línea”. Esto hace que la impresora (o la consola en este caso) avance a la siguiente línea. Es similar a pulsar la tecla ‘enter’.
Recursos y donde continuar
Hay muchos conjuntos de codificación de caracteres disponibles. La codificación más popular para la World Wide Web es UTF-8. En junio de 2016, UTF-8 se utiliza en el 87% de las páginas web.
UTF-8 es compatible con ASCII, lo que significa que los primeros 128 caracteres son los mismos que ASCII. UTF-8 puede utilizar 2, 3 y 4 bytes para codificar los caracteres de la mayoría de las lenguas escritas modernas, incluidos los caracteres latinos, griegos, cirílicos, árabes, chinos, coreanos y japoneses.
El conocimiento de la codificación ASCII básica puede ser útil cuando se trabaja con terminales en serie. Consulta los fundamentos de los terminales serie para aprender a utilizar algunos de los muchos programas de terminales serie disponibles.
Si estás interesado en descargar la tabla ASCII en formato de imagen, haz clic en el link de abajo. Con una imagen, puedes imprimirla y colgarla en tu pared, ponerla en una taza de café o imprimirla en tu mouse pad. Link.
Shawn Hymel. ASCII. Sparkfun.