AZ Tools
← Guías

Bases numéricas y codificaciones de texto: una chuleta para desarrolladores

Los números y el texto terminan siendo lo mismo dentro de un ordenador: bits. Pero los desarrolladores cambian constantemente entre representaciones para humanos y para máquinas — códigos de color en hexadecimal, tokens en Base64, cadenas de consulta con escape de URL. Esta guía es un mapa práctico de las bases y codificaciones que encuentras a diario, y para qué sirve cada una.

Bases numéricas: el mismo valor, distinta ropa

Una 'base' es simplemente cuántos dígitos distintos usa un sistema posicional antes de pasar a la siguiente posición. El decimal (base 10) usa 0–9; el binario (base 2) usa 0 y 1; el octal (base 8) usa 0–7; el hexadecimal (base 16) usa 0–9 y luego A–F. El número en sí no cambia entre bases — solo cambia cómo se escribe. 11111111 en binario, 377 en octal, 255 en decimal y FF en hexadecimal son exactamente el mismo valor.

El hexadecimal es popular entre los programadores porque un dígito hexadecimal corresponde exactamente a cuatro bits (un nibble), así que dos dígitos hexadecimales son exactamente un byte. Eso hace del hexadecimal una forma compacta y sin pérdidas de leer binario en crudo — por eso los colores (#FF8800), las direcciones de memoria y los volcados de bytes se escriben así.

Convertir entre bases

Estas conversiones son puramente mecánicas — justo el tipo de cosa que una herramienta debería hacer por ti — pero conocer la forma de la operación te ayuda a comprobar un resultado y a entender qué significan los prefijos 0x, 0o y 0b en el código.

  • Binario ↔ hexadecimal: agrupa los bits de cuatro en cuatro desde la derecha; cada grupo de cuatro es un dígito hexadecimal (1010 1100 = AC).
  • Cualquier base → decimal: multiplica cada dígito por su valor posicional (la base elevada a la posición) y suma.
  • Decimal → cualquier base: divide repetidamente entre la base; los restos, leídos del último al primero, son los dígitos.

De caracteres a bytes: UTF-8

El texto no son bytes hasta que lo codificas. Un conjunto de caracteres asigna a cada carácter un número (un 'punto de código') — Unicode es el universal — y una codificación decide cómo esos números se vuelven bytes. UTF-8 es la codificación dominante en la web: los caracteres ASCII ocupan un byte, y los demás de dos a cuatro, lo que mantiene compacto el texto en inglés a la vez que representa todos los sistemas de escritura y emojis.

Por eso la longitud de una cadena en caracteres y su longitud en bytes pueden diferir: 'café' son cuatro caracteres pero cinco bytes en UTF-8, porque é necesita dos. El hashing, los límites de tamaño y los formatos binarios se fijan en los bytes, así que la distinción importa en la práctica.

Base64: bytes como texto seguro

Base64 hace el trabajo contrario: convierte bytes arbitrarios en una cadena de 64 caracteres seguros (A–Z, a–z, 0–9, más + y /). Existe porque muchos sistemas — correo, JSON, URLs, URIs data: de HTML — se construyeron para texto y pueden estropear el binario en crudo. Base64 te permite transportar una imagen o una clave intactas por un canal de solo texto.

El coste es el tamaño: Base64 codifica cada 3 bytes como 4 caracteres, así que la salida es alrededor de un 33% mayor que la entrada. Es codificación, no cifrado — cualquiera puede decodificarla — así que protege contra la corrupción en tránsito, nunca contra miradas ajenas.

Codificación de URL y por porcentaje

Las URLs tienen sus propias reglas. Los caracteres con significado especial en una URL (espacios, &, ?, #, /) deben 'codificarse por porcentaje' como un % seguido de su valor de byte en hexadecimal — un espacio se vuelve %20, un ampersand se vuelve %26. Esto es lo que permite que una cadena de consulta lleve texto arbitrario sin romper la dirección.

La codificación por porcentaje opera sobre los bytes UTF-8 de un carácter, lo que enlaza todo: el texto se vuelve puntos de código, los puntos de código se vuelven bytes UTF-8, y los bytes se vuelven pares %XX. La mayoría de los errores de codificación que sufren los desarrolladores vienen de confundir una de estas capas con otra.

Herramientas relacionadas