Skip to content

Tabla ASCII y convertidor de caracteres

La tabla ASCII completa: 128 caracteres en decimal, hexadecimal, octal y binario, más un convertidor texto ↔ ASCII. Cada carácter de control trae su secuencia de escape, su notación caret y dónde te lo encuentras.

Sin rastreo Se ejecuta en el navegador Gratis

Todo se ejecuta en tu navegador: lo que escribes nunca se sube, ni se registra, ni se almacena.

Texto y código ASCII, en los dos sentidos

La tabla ASCII completa (0–127)

128 / 128
Dec Hex Oct Binario Car. Nombre Escape Caret HTML Dónde te lo encuentras
0 00 000 00000000 NUL Null \0 ^@ � Terminador de cadenas en C; separa nombres de archivo en find -print0 y xargs -0; grep lo ve como archivo binario.
1 01 001 00000001 SOH Start of Heading ^A  El protocolo FIX lo usa como separador de campos, y por eso los mensajes FIX parecen una sola línea corrida.
2 02 002 00000010 STX Start of Text ^B  Cabecera de trama en protocolos de puerto serie, TPV y lectores de códigos de barras; tecla de prefijo Ctrl+B de tmux.
3 03 003 00000011 ETX End of Text ^C  Ctrl+C envía este byte; la disciplina de línea del tty lo convierte en SIGINT, así que tu programa nunca llega a verlo.
4 04 004 00000100 EOT End of Transmission ^D  Ctrl+D envía la línea de entrada actual; cuando la línea está vacía, la lectura devuelve 0 bytes, y eso es el EOF.
5 05 005 00000101 ENQ Enquiry ^E  Negociaciones de enlaces antiguos; algunos terminales responden con una cadena de identificación.
6 06 006 00000110 ACK Acknowledge ^F  Emparejado con ENQ y NAK en los viejos protocolos de enlace; todavía se ve en equipos serie industriales.
7 07 007 00000111 BEL Bell \a ^G  printf '\a' hace sonar la campana; hoy es más habitual que cierre una secuencia OSC, como el título de la ventana.
8 08 010 00001000 BS Backspace \b ^H  Borrado en las barras de progreso. Ojo: la mayoría de terminales envían 0x7F al pulsar Retroceso, no este byte.
9 09 011 00001001 HT Character Tabulation \t ^I 	 Las recetas de un Makefile deben empezar por un tabulador real; Tab y Ctrl+I son el mismo byte.
10 0A 012 00001010 LF Line Feed \n ^J 
 Salto de línea en Unix y macOS; el core.autocrlf de git convierte entre este byte y CRLF.
11 0B 013 00001011 VT Line Tabulation \v ^K  Casi extinto, pero sigue contando como salto de línea: splitlines() corta por él y split("\n") no.
12 0C 014 00001100 FF Form Feed \f ^L  Salto de página en impresoras; Ctrl+L limpia el terminal; Emacs lo usa como marca de sección en el código.
13 0D 015 00001101 CR Carriage Return \r ^M 
 La primera mitad del CRLF de Windows; sale como ^M en git diff; provoca bad interpreter: /bin/bash^M.
14 0E 016 00001110 SO Shift Out ^N  Cambia al juego de caracteres alternativo G1 en ISO 2022; envuelve zonas de doble byte en mainframes EBCDIC.
15 0F 017 00001111 SI Shift In ^O  Vuelve al juego de caracteres G0 por defecto, emparejado con SO.
16 10 020 00010000 DLE Data Link Escape ^P  Prefijo de escape del relleno de bytes en protocolos binarios antiguos.
17 11 021 00010001 DC1 Device Control One ^Q  XON: reanudación del control de flujo por software; Ctrl+Q descongela la salida del terminal.
18 12 022 00010010 DC2 Device Control Two ^R  Sin significado moderno fijo. El Ctrl+R del shell es un atajo de readline, sin relación con este código.
19 13 023 00010011 DC3 Device Control Three ^S  XOFF: pausa del control de flujo por software. Pulsar Ctrl+S sin querer es la causa habitual de un terminal congelado.
20 14 024 00010100 DC4 Device Control Four ^T  Sin significado moderno fijo; en BSD y macOS, Ctrl+T es la tecla de estado del tty.
21 15 025 00010101 NAK Negative Acknowledge ^U  Ctrl+U borra la línea entera: eso es el ajuste kill del tty, no el significado original de este código.
22 16 026 00010110 SYN Synchronous Idle ^V  Ctrl+V es lnext: púlsalo y luego Tab para escribir un tabulador real en bash sin disparar el autocompletado.
23 17 027 00010111 ETB End of Transmission Block ^W  Ctrl+W borra la palabra anterior: el ajuste werase del tty.
24 18 030 00011000 CAN Cancel ^X  ECMA-48 lo usa para abortar una secuencia de control sin terminar; los terminales descartan la secuencia en curso.
25 19 031 00011001 EM End of Medium ^Y  Hoy apenas se usa; en BSD y macOS, Ctrl+Y es la suspensión diferida.
26 1A 032 00011010 SUB Substitute ^Z  Marca de fin de archivo en los textos de CP/M y DOS, y por eso las consolas de Windows terminan la entrada con Ctrl+Z.
27 1B 033 00011011 ESC Escape ^[  Inicio de toda secuencia ANSI: \033[0m restablece el color y \033[2J limpia la pantalla. Ctrl+[ también lo envía.
28 1C 034 00011100 FS File Separator ^\  El encapsulado MLLP de HL7 v2 lo usa como terminador de bloque; Ctrl+\ envía SIGQUIT.
29 1D 035 00011101 GS Group Separator ^]  En los códigos de barras GS1 el separador FNC1 es este byte: el delimitador invisible que emite tu lector.
30 1E 036 00011110 RS Record Separator ^^  Las JSON Text Sequences de la RFC 7464 prefijan con él cada registro. Uno de los pocos usos modernos que siguen vivos.
31 1F 037 00011111 US Unit Separator ^_  Separador de campos en texto estructurado, más seguro que una coma porque nunca aparece en los datos.
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 ^?  Lo que realmente envía tu tecla de retroceso en la mayoría de terminales. Viene de la cinta perforada: siete agujeros.

La columna binaria se rellena hasta 8 bits para que se lea mejor. ASCII en sí es un código de 7 bits: el bit más alto siempre vale 0, y es exactamente eso lo que permite que UTF-8 siga siendo retrocompatible con él.

¿Y del 128 al 255?

ASCII no define en absoluto el rango 128–255. «ASCII extendido» no es el nombre de ninguna norma: es un término impreciso para toda una familia de codificaciones de 8 bits. El mismo byte es un carácter distinto en cada una de ellas:

Byte ISO-8859-1 Windows-1252 CP437 CP866
0x80 U+0080 Control C1 (invisible) Ç А
0x93 U+0093 Control C1 (invisible) ô У
0xB0 ° °
0xE9 é é Θ щ
0xFF ÿ ÿ U+00A0 U+00A0
Las clasificaciones de caracteres se contrastan con las propias categorías de Unicode en los tests, y la correspondencia de Windows-1252 se verifica byte a byte contra el decodificador de la plataforma. — Equipo de ingeniería de Go-Tools · Sep 2, 2026

Cada valor de la tabla lo genera un único motor que ejecutan tanto el servidor como el navegador, así que lo que lee un rastreador y aquello con lo que tú interactúas nunca pueden separarse. Las diferencias de escapes entre lenguajes se verificaron compilando y ejecutando el código en cada uno, no citándolas de memoria.

Referencia rápida

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

A = 65 La `A` mayúscula es 65 en decimal, `0x41` en hexadecimal, `101` en octal y `01000001` en binario. La `a` minúscula es 97: exactamente 32 más, que es un solo bit.

¿Cuántos caracteres tiene ASCII?

128 128, numerados del 0 al 127. Es decir, 32 caracteres de control, 95 caracteres gráficos contando el espacio, y DEL.

¿Qué es el ASCII 0?

0 = NUL NUL, el carácter nulo. Termina las cadenas en C, separa nombres de archivo en `find -print0` y hace que `grep` trate un archivo como binario.

¿Qué byte es el salto de línea?

LF = 10, CR = 13 El avance de línea (LF) es 10 (`0x0A`, `\n`). El retorno de carro (CR) es 13 (`0x0D`, `\r`). Los finales de línea de Windows son los dos, primero CR.

¿Qué es ASCII?

ASCII es una codificación de caracteres de 7 bits: 128 puntos de código, numerados del 0 al 127, y ni uno más. Se publicó por primera vez como ASA X3.4-1963 y su forma actual es ANSI X3.4-1986; RFC 20 describe su uso en internet y en 2015 se elevó a norma de internet STD 80. La primera versión no tenía ninguna letra minúscula; esas llegaron con la revisión de 1967. Todo lo que está por encima de 127 pertenece a otra codificación, no a 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

Qué te da esta tabla

Las cuatro bases una al lado de la otra

Decimal, hexadecimal, octal y binario de 8 bits para cada uno de los 128 puntos de código, con ese cero a la izquierda que te recuerda que ASCII en realidad es de 7 bits.

Las secuencias de escape por lenguaje

La columna \0 \a \b \t \n \v \f \r más las diferencias que de verdad rompen compilaciones: JavaScript no tiene \a, Java no tiene ni \a ni \v, y \e es una extensión de GNU en vez de ISO C.

Notación caret

La columna de ^@ a ^?, y la única regla que cubre los 33 caracteres de control: hacer el XOR del byte con 0x40. Ni sumar ni restar: XOR.

Dónde te encuentras de verdad cada carácter de control

No solo «SOH — start of heading», sino que los mensajes del protocolo FIX lo usan como separador de campos, que 0x1D es el separador invisible que emite tu lector de códigos de barras, y que el Ctrl+S que congela tu terminal es XOFF.

Un convertidor que se niega a adivinar

La base la eliges tú. Los bytes por encima de 127 se rechazan con una nota sobre cómo se leerían en Windows-1252 y en ISO-8859-1, en lugar de colarse como ASCII.

Los caracteres de control siguen visibles

NUL, TAB y CR no tienen glifo, así que la vista previa los muestra con los Control Pictures de Unicode. El botón de copiar te sigue dando los bytes reales.

Codificaciones relacionadas

ISO/IEC 8859-1 (Latin-1)

8 bits, un byte

Mantiene 0–127 idéntico a ASCII y define 96 caracteres gráficos de 0xA0 a 0xFF. El rango 0x800x9F queda para los caracteres de control C1, que son invisibles.

Windows-1252

8 bits, un byte

Un superconjunto de ISO-8859-1 cuya única diferencia está en 0x800x9F, donde coloca 27 caracteres imprimibles y deja 5 sin definir. Los navegadores lo usan siempre que una página se declara ISO-8859-1.

CP437

8 bits, un byte

La página de códigos original del IBM PC. Su mitad alta son letras acentuadas, letras griegas y caracteres de dibujo de cajas: esas son las tablas que aparecen en los artículos que prometen 256 caracteres ASCII.

UTF-8

Variable, de 1 a 4 bytes

Codifica todo Unicode manteniendo cada byte ASCII idéntico byte a byte. Es retrocompatible con US-ASCII, pero no con ninguna de las páginas de códigos de 8 bits anteriores.

Ejemplos

De texto a códigos decimales

Hello
72 101 108 108 111

Cada carácter se convierte en su punto de código decimal. Las mayúsculas van de 65 a 90 y las minúsculas de 97 a 122 —exactamente 32 de diferencia—, y por eso invertir el bit 5 cambia de caja.

Los mismos códigos leídos en dos bases

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

Por eso el convertidor nunca adivina la base por ti. Las dos lecturas son válidas; solo tú sabes cuál querías.

Los caracteres de control sobreviven a la ida y vuelta

9 10 13 0
TAB, LF, CR, NUL

Son invisibles en la caja de salida, así que la línea de vista previa los muestra con los Control Pictures de Unicode. El botón de copiar sigue copiando los bytes reales, no los sustitutos.

Los bytes por encima de 127 se rechazan, con explicación

233
Outside ASCII (0-127)

233 no es un código ASCII. La herramienta te dice que se lee como é tanto en Windows-1252 como en ISO-8859-1, pero no va a hacerlo pasar por ASCII.

Cómo se usa

  1. 1

    Elige la base

    Decimal, hexadecimal, octal o binaria. Hazlo primero: los mismos dígitos se decodifican de forma distinta en cada base y la herramienta se niega a adivinar a propósito.

  2. 2

    Escribe en cualquiera de los dos lados

    Texto a la izquierda, códigos a la derecha. Escribas donde escribas, el otro lado se actualiza.

  3. 3

    Lee los avisos

    Los caracteres fuera de 0–127 se listan con su punto de código y sus bytes UTF-8, en lugar de descartarse en silencio o convertirse en interrogantes.

  4. 4

    Usa la tabla como referencia

    Filtra por caracteres de control, busca por código o por nombre, y haz clic en cualquier carácter para copiarlo.

Errores que conviene conocer

Afirmar que ASCII tiene 256 caracteres

ASCII se detiene en 127. Todo lo que hay más allá pertenece a una página de códigos de 8 bits concreta, que hay que nombrar. Python te lo dirá sin rodeos si le pides codificar una letra acentuada como ASCII.

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

Dar por hecho que todos los lenguajes tienen los mismos escapes

JavaScript no tiene el escape \a. En vez de fallar, se come la barra invertida y te deja la letra, y el modo estricto no ayuda.

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

Explicar la notación caret como una suma

Sumar 0x40 funciona en el rango C0 y luego se rompe con DEL, donde habría que restar. El XOR es la única regla que cubre los 33.

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

Cuándo lo necesitas

Leer un volcado hexadecimal o una traza de protocolo
Tienes bytes y necesitas saber cuáles son imprimibles, cuáles son separadores y cuáles son códigos de control sobre los que el terminal está actuando sin decir nada.
Depurar un archivo que se comporta raro
Un CR perdido al final de cada línea, un NUL que hace que grep considere binario el archivo, o un tabulador donde un Makefile exigía uno.
Escribir un analizador o un validador
Decidir qué rangos de bytes aceptar y colocar bien los límites: 0x210x7E para los caracteres gráficos, 0x20 para el espacio, 0x7F para DEL.
Explicar un fallo de codificación
Enseñarle a un compañero por qué el mismo byte aparece como tres caracteres distintos según la página de códigos que supusiera quien lo leyó.

Detalles técnicos

ASCII, Unicode y UTF-8
Los primeros 128 puntos de código de Unicode, de U+0000 a U+007F, se corresponden uno a uno con ASCII. UTF-8 los codifica como bytes sueltos 0x000x7F con el bit más alto a 0. La propiedad que de verdad importa es la tercera: cada byte de una secuencia UTF-8 multibyte tiene el bit más alto a 1, así que un byte en el rango 0–127 nunca puede formar parte de un carácter no ASCII. Eso es lo que hace seguro recorrer UTF-8 byte a byte buscando /, \0 o \n.
El octavo bit
ASCII define un código de 7 bits; guardar un carácter por byte de 8 bits es una convención, e históricamente ese bit sobrante solía ser un bit de paridad. Los transportes de correo que solo garantizaban transparencia de 7 bits son la razón de que existan Base64 y quoted-printable.
Por qué el alfabeto está ordenado así
Los dígitos 09 ocupan 0x300x39, de modo que el nibble bajo es el valor en sí. A es 0x41 y a es 0x61 —un solo bit de diferencia—, así que c | 0x20 pasa a minúsculas y c & 0xDF a mayúsculas. Pero solo con las letras: '_' | 0x20 da 0x7F, que es DEL, y '[' | 0x20 da {.
Las variantes nacionales y el problema del 0x5C
ISO/IEC 646 permitía sustituir 12 puntos de código según el país. El JIS X 0201 japonés puso un signo de yen en 0x5C y el KS X 1003 coreano puso ahí un signo de won, y por eso un Windows japonés muestra las rutas con un signo de yen mientras el byte sigue siendo 0x5C. En Shift_JIS es peor: el segundo byte de un carácter de dos bytes puede ser él mismo 0x5C, y los caracteres hyou, so, juu, nou, kou y bou terminan todos en él, así que tratar las barras invertidas de forma ingenua los parte por la mitad.

Cómo hacerlo bien

Nombra siempre la página de códigos
«ASCII extendido» no le dice nada a quien te lee. Di Windows-1252, o ISO-8859-1, o CP437: el mismo byte es un carácter distinto en cada una.
Di US-ASCII cuando sea eso lo que quieres decir
Ese es el nombre registrado en la IANA. charset=ascii no lo es, y en un navegador charset=ISO-8859-1 te dará en realidad Windows-1252, porque el WHATWG Encoding Standard asigna así esa etiqueta.
Nunca adivines la base por el usuario
Si tu herramienta o tu analizador decide en silencio que 41 es hexadecimal, se equivocará aproximadamente la mitad de las veces y el fallo será silencioso.
Itera por punto de código, no por unidad UTF-16
"A" + clave de sol + carácter chino tiene .length === 4 pero solo tres caracteres. Usa [...str] o codePointAt, o tu mensaje de «carácter no admitido» informará de los emoji como dos mitades rotas.

Preguntas frecuentes

¿Cuántos caracteres tiene ASCII?
128. ASCII es un código de 7 bits, así que define exactamente los puntos de código del 0 al 127: 32 caracteres de control C0, 95 caracteres gráficos contando el espacio, y DEL. Los artículos titulados «tabla ASCII completa (256 caracteres)» te están enseñando una página de códigos de 8 bits concreta —normalmente CP437 o Windows-1252—, no ASCII.
¿Qué es el ASCII extendido?
Nada, en sentido estricto. «ASCII extendido» no es el nombre de ninguna norma; es un término impreciso para toda una familia de codificaciones de 8 bits que mantienen 0–127 igual y definen 128–255 cada una a su manera. El byte 0xE9 es é en ISO-8859-1, la letra griega Θ en CP437 y una letra cirílica en CP866. Sin nombrar la página de códigos, la pregunta no tiene respuesta.
¿Windows-1252 es lo mismo que ISO-8859-1?
Son idénticos de 0xA0 a 0xFF y completamente distintos de 0x80 a 0x9F. ISO-8859-1 deja ese rango a los caracteres de control C1, que son invisibles; Windows-1252 coloca ahí 27 caracteres imprimibles —el signo del euro, las comillas tipográficas, la raya y el semicuadratín— y deja 5 posiciones sin definir. Por eso una comilla tipográfica copiada de un procesador de textos se convierte en un carácter de control invisible en cuanto pasa por algo que es ISO-8859-1 de verdad.
¿DEL es un carácter de control?
Sí. Unicode clasifica U+007F como Cc, y el iscntrl(127) de C es cierto. Simplemente no forma parte del conjunto C0, que es estrictamente 0x000x1F. Está al final de la tabla por la cinta perforada: 0x7F son siete agujeros perforados y, una vez hecho un agujero, no se puede deshacer, así que «todos los agujeros perforados» era la única forma de marcar un carácter como borrado.
¿El espacio es un carácter de control?
No, y muchas tablas ASCII se equivocan en esto. Unicode clasifica el espacio (0x20) como Zs, separador de espacio, que es un carácter gráfico. Solo 0x000x1F y 0x7F son caracteres de control.
Si ASCII es de 7 bits, ¿por qué mi columna binaria muestra 8?
Porque el byte es la unidad en la que realmente se almacena todo: el bit más alto simplemente vale siempre 0. Ese relleno no es cosmético: precisamente porque ASCII nunca usa el octavo bit, UTF-8 pudo reclamarlo como la marca de «esto forma parte de una secuencia multibyte», y eso es lo que hace que UTF-8 sea retrocompatible con ASCII.
¿Todos los lenguajes escriben igual los caracteres de control?
No, y las diferencias muerden. \a (campana) es estándar en C y en Python, pero JavaScript no tiene ese escape: '\a' se convierte en silencio en la letra a, sin error ni siquiera en modo estricto. Java rechaza tanto \a como \v. Go rechaza \0 porque sus escapes octales deben tener exactamente tres dígitos, así que se escribe \000. Y \e para ESC es una extensión de GNU, no ISO C.
¿Qué significa ^M en un diff o en vim?
Es un retorno de carro, el byte 13. La notación caret escribe un carácter de control haciendo el XOR de su valor con 0x40, de modo que CR (0x0D) pasa a ser ^M y ESC (0x1B) pasa a ser ^[. Ver ^M al final de cada línea significa que el archivo tiene finales de línea CRLF de Windows; ver bad interpreter: /bin/bash^M significa que un script de shell los ha arrastrado.

Herramientas relacionadas

Ver todas las herramientas →