Lección 2
Cómo funciona la codificación Base64
Bits, grupos de seis y el alfabeto de 64 caracteres.
Base64 es elegante porque reutiliza ideas que ya conoces: bits, potencias de dos y una tabla de búsqueda (el alfabeto). No hay diccionario en prosa ni paso de compresión — solo reordenamiento determinista de bits más sustitución de caracteres.
De bytes a un flujo de bits
Un byte son ocho bits. Tres bytes dan 24 bits:
Byte1: ########
Byte2: ########
Byte3: ######## → concatenar en 24 bits en orden
Base64 reagrupa esos 24 bits en cuatro sextetos (seis bits cada uno):
[######][######][######][######]
^ ^ ^ ^
idx 0 idx 1 idx 2 idx 3
Cada valor de seis bits va de 0–63, lo que indexa uno de 64 símbolos. Ese conteo de índices es literalmente de donde sale el nombre «base 64»: escribes números en base 64, usando caracteres ASCII imprimibles en lugar de dígitos 0–63.
El alfabeto estándar (estilo RFC)
Base64 tradicional asigna:
0–25 → A–Z
26–51 → a–z
52–61 → 0–9
62 → '+'
63 → '/'
La decodificación recorre el mapa inverso: símbolo → seis bits → reconstruir grupos originales de ocho bits.
Mini ejemplo a mano (dos bytes → cuatro chars con intuición de relleno)
Rara vez necesitas trazar manualmente en el día a día, pero afianza la intuición. Toma ASCII "Hi":
H=0x48(01001000)i=0x69(01101001)
Concatena 16 bits: 0100100001101001.
Rellena a la derecha con ceros hasta que la longitud sea divisible por seis (la lección sobre relleno profundiza):
010010 | 000110 | 100100 |
18 | 6 | 36 |
El cuarto sexteto está incompleto hasta que llegue más entrada; los serializadores emiten marcadores de relleno = (detallado en la siguiente lección). Las bibliotecas manejan esto mecánicamente — ver las divisiones explica por qué crecen las longitudes y por qué la corrupción voltea los bits posteriores de forma drástica.
Por qué la salida crece ~33%
Cada trío de bytes (24 bits) se convierte en cuatro caracteres codificados que representan la misma entropía repartida en texto imprimible. Crecimiento promedio simplificado: para n bytes de entrada, espera unos ceil(4n/3) caracteres antes del relleno.
Más símbolos de relleno = cuando n mod 3 != 0. Ese overhead es esperado; Base64 intercambió tamaño por compatibilidad.
Simetría de decodificación
Decodificar:
- Mapea cada carácter del alfabeto → valor de seis bits (las peculiaridades de
+//aparecen solo si elegiste la variante correspondiente más adelante). - Concatena bits.
- Reagrupa en bytes (fragmentos de ocho bits).
Si la longitud de la cadena es malformada o aparecen símbolos falsos (p. ej., espacios en blanco o índice de alfabeto incorrecto), la decodificación falla — o peor, interoperan de forma inconsistente según parsers laxos.
Idea clave
Base64 refragmenta bits en grupos de seis y sustituye cada fragmento por uno de sesenta y cuatro caracteres imprimibles predeterminados. Una vez visualizas el reagrupamiento, el relleno y las sustituciones URL-safe dejan de ser misteriosos. Usa la herramienta Base64 para codificar y decodificar muestras.