← Todas las herramientas

Tabla ASCII

Una referencia completa de la tabla ASCII con códigos decimal, hex y binario, caracteres de control frente a imprimibles, y la relación de ASCII con Unicode y UTF-8.
DecHexOctCharNombre

La tabla ASCII: cómo 128 números se convirtieron en la base del texto

ASCII, abreviatura de American Standard Code for Information Interchange, es la codificación que enseñó a las computadoras a ponerse de acuerdo sobre qué es una letra. Publicada en 1963 y refinada a lo largo de la década de 1960, asigna cada carácter básico del texto en inglés, los dígitos y un puñado de señales de control a números que una máquina puede almacenar y transmitir. Cuando pulsas la tecla de una A mayúscula, tu computadora no almacena una forma, almacena el número 65. ASCII es la tabla de consulta que hace que ese número signifique A allí donde viaje.

El estándar es célebremente compacto. ASCII es un código de 7 bits, lo que significa que cada carácter cabe en siete dígitos binarios y todo el repertorio abarca exactamente 2 elevado a la potencia de 7, es decir, 128 puntos de código distintos numerados del 0 al 127. Esa economía fue deliberada. Los primeros teletipos y módems eran lentos y caros, así que cada bit contaba. Siete bits bastaban para cubrir las letras latinas mayúsculas y minúsculas, los diez dígitos, la puntuación común y los caracteres de señalización que mantenían sincronizados los dispositivos, con un bit sobrante que muchos sistemas usaban para la comprobación de errores.

Cuadrícula abstracta y brillante de celdas de caracteres ordenadas en índigo oscuro con luz cian y dorada
ASCII organiza cada carácter en una cuadrícula fija y ordenada de 128 celdas numeradas.

Dos mitades: caracteres de control y caracteres imprimibles

La tabla se divide claramente en dos regiones. Los códigos del 0 al 31, más el código 127 (DEL), son los caracteres de control. Estos no imprimen ningún glifo en pantalla. En cambio, ordenan a un dispositivo que haga algo: el código 9 es un tabulador horizontal, el código 10 es el salto de línea que pasa a una línea nueva, el código 13 es el retorno de carro y el código 7 es la campana que en su día hacía que un terminal sonara de forma audible. En total existen treinta y tres de estos códigos de señalización y, aunque muchos son ahora curiosidades históricas, el salto de línea, el retorno de carro y el tabulador siguen siendo esenciales para la forma en que se da formato a los archivos de texto hoy en día.

Los códigos del 32 al 126 son los caracteres imprimibles, noventa y cinco en total. El código 32 es el espacio, que cuenta como imprimible porque avanza el cursor aunque no muestre nada. A partir de ahí tienes la puntuación y los símbolos, los dígitos del 0 al 9 en los códigos 48 a 57, las letras mayúsculas A a Z en 65 a 90, y las letras minúsculas a a z en 97 a 122. De esta disposición se desprende una propiedad elegante: las versiones minúscula y mayúscula de la misma letra difieren exactamente en 32, razón por la cual cambiar un solo bit convierte el caso. Estas regularidades no son accidentes, se diseñaron para que la ordenación y la conversión de mayúsculas y minúsculas pudieran hacerse con aritmética simple.

Decimal, hexadecimal y binario: tres vistas de un mismo número

Cada código ASCII no es más que un número, y lo verás escrito de tres maneras. El decimal es la forma cotidiana en base 10, así que A es 65. El hexadecimal, base 16, es la forma a la que recurren los programadores porque se alinea con los bytes: A es 0x41, y el rango imprimible va de 0x20 a 0x7E. El binario, base 2, es la forma que el hardware realmente almacena, así que A es 1000001 a lo largo de sus siete bits. El mismo carácter, tres notaciones, y dominar el paso de una a otra es una habilidad fundamental cuando lees volcados de memoria o tráfico de red. Si trabajas a menudo con estas conversiones, el conjunto más amplio de tablas de referencia en speedor.net mantiene las correspondencias a un clic de distancia.

Flujos de luz binaria y hexadecimal que fluyen hacia ranuras de glifos brillantes sobre un campo azul marino
El binario y el hexadecimal son simplemente bases distintas que describen el mismo punto de código ASCII.

Dónde sigue importando ASCII

Sería un error archivar ASCII bajo "historia". Está vivo en el trabajo diario de cualquiera que toque código. Los lenguajes de programación tratan los literales de cadena, los archivos fuente y las palabras clave de protocolo como ASCII a nivel de byte. Los protocolos de red como las cabeceras HTTP, SMTP y muchos formatos de configuración están definidos en ASCII para que sigan siendo legibles por humanos. Cuando una cadena parece corrupta, los desarrolladores recurren a un visor hexadecimal y leen los bytes en bruto contra la tabla ASCII para detectar un carácter de control perdido o un final de línea equivocado. La codificación de URL, Base64 y las secuencias de escape se construyen todas sobre valores ASCII. Para cualquiera que depure errores de codificación, una referencia rápida junto a tus herramientas para desarrolladores convierte un byte misterioso en una respuesta obvia.

De ASCII a Unicode y UTF-8

ASCII manejaba el inglés de maravilla y casi nada más. Un techo de 128 caracteres no puede contener letras acentuadas, cirílico, chino, árabe ni emoji. Unicode respondió a eso asignando un número único, llamado punto de código, a cada carácter de cada sistema de escritura, ahora bastante más de cien mil. Es crucial entender que Unicode es un catálogo de caracteres, no un formato de almacenamiento, así que necesita una codificación para convertir esos puntos de código en bytes.

UTF-8 es esa codificación, y es la razón por la que ASCII nunca llegó a desaparecer. UTF-8 usa de uno a cuatro bytes por carácter, y se diseñó para que los puntos de código del 0 al 127, todo el rango ASCII, se almacenen en un solo byte idéntico al ASCII puro. Eso hace que UTF-8 sea perfectamente compatible hacia atrás: cualquier archivo ASCII válido ya es un archivo UTF-8 válido. Los caracteres por encima de 127 usan bytes adicionales. Esta elegante compatibilidad es una gran razón por la que UTF-8 impulsa ahora la inmensa mayoría de la web. En resumen, ASCII es el núcleo original de 128 caracteres, Unicode es el catálogo universal que lo contiene, y UTF-8 es la codificación que lleva a ambos mientras mantiene el texto ASCII byte por byte sin cambios.

Preguntas frecuentes

¿Cuántos caracteres hay en la tabla ASCII?

El ASCII estándar define 128 caracteres, numerados del 0 al 127. De estos, 95 son caracteres imprimibles, incluido el espacio, y 33 son caracteres de control que señalan a los dispositivos en lugar de imprimir un glifo.

¿Cuál es la diferencia entre los caracteres de control y los imprimibles?

Los caracteres de control, códigos 0 a 31 más el 127, ordenan a un dispositivo que haga algo como un salto de línea o un tabulador y no producen ningún glifo visible. Los caracteres imprimibles, códigos 32 a 126, son las letras, dígitos, puntuación y el espacio que realmente ves en pantalla.

¿Por qué ASCII es un código de 7 bits?

Siete bits dan exactamente 128 combinaciones, lo que bastaba para cubrir las letras del inglés, los dígitos, la puntuación y las señales de control a la vez que se ahorraba ancho de banda en el hardware temprano y lento. El octavo bit de un byte se reservaba a menudo para la comprobación de errores por paridad.

¿Cuál es el código ASCII de la letra A?

La A mayúscula es 65 en decimal, 0x41 en hexadecimal y 1000001 en binario. La a minúscula es 97 en decimal, exactamente 32 más, un patrón incorporado que permite que la conversión de mayúsculas y minúsculas se haga con aritmética simple.

¿Es ASCII lo mismo que Unicode?

No. ASCII cubre 128 caracteres, mientras que Unicode cataloga más de cien mil de cada sistema de escritura. ASCII es en la práctica los primeros 128 puntos de código de Unicode, así que es un pequeño subconjunto del estándar más amplio.

¿Cómo se relaciona UTF-8 con ASCII?

UTF-8 es una codificación de Unicode que almacena los puntos de código del 0 al 127 en un solo byte idéntico al de ASCII. Esto hace que cada archivo ASCII sea un archivo UTF-8 válido, razón por la cual UTF-8 es compatible hacia atrás y domina la web moderna.