Base64 en C#: codificación y decodificación de cadenas con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Base64 en C#: cómo codificar y decodificar cadenas sin dolor de cabeza

\n\n

¿Alguna vez te has encontrado en una situación donde necesitas transmitir datos binarios a través de un protocolo de texto, enviar una imagen en JSON o guardar un hash en un formato legible? Aquí es donde entra en escena Base64: el viejo, confiable y seguro formato que convierte cualquier byte en texto seguro.

\n\n

La pregunta "How do I encode and decode a base64 string?" es una de las más populares en Stack Overflow (decenas de miles de visitas). Y con razón: en C# trabajar con Base64 parece simple, pero hay trampas en cada esquina. Hoy analizaremos todo de principio a fin: desde ejemplos básicos hasta casos reales de producción.

\n\n

¿Qué es Base64 y para qué sirve?

\n\n

Base64 es una forma de representar datos binarios (bytes) como una cadena ASCII. El alfabeto consta de 64 caracteres: A-Z, a-z, 0-9, más los caracteres '+' y '/'. Al final de la cadena a menudo se agrega el carácter '=' para alineación.

\n\n

¿Dónde se aplica?

\n
    \n
  • Transmisión de datos en JSON/XML — los datos binarios no se pueden insertar directamente, solo como cadena
  • \n
  • Autenticación — Basic Auth usa Base64 para codificar el nombre de usuario y la contraseña
  • \n
  • Almacenamiento de imágenes en BD — las imágenes pequeñas se guardan directamente en la base de datos como Base64
  • \n
  • Archivos adjuntos de correo electrónico — el formato MIME requiere Base64 para archivos binarios
  • \n
\n\n

En C#, todo esto lo maneja la clase System.Convert — tu herramienta principal para trabajar con Base64.

\n\n

Cómo codificar una cadena en Base64 con C#

\n\n

El escenario más común: tienes una cadena normal (por ejemplo, "¡Hola, mundo!") y quieres obtener su representación en Base64.

\n\n

Así es como se hace:

\n\n
using System;\nusing System.Text;\n\nstring original = "Hello, World!";\nbyte[] bytes = Encoding.UTF8.GetBytes(original);\nstring base64 = Convert.ToBase64String(bytes);\n\nConsole.WriteLine(base64); // Salida: SGVsbG8sIFdvcmxkIQ==
\n\n

Un punto importante: Base64 trabaja con bytes, no con cadenas. Por lo tanto, primero convertimos la cadena en un arreglo de bytes (usando la codificación UTF-8) y luego codificamos esos bytes.

\n\n

¿Por qué UTF-8 y no, por ejemplo, ASCII? Porque UTF-8 admite todos los caracteres Unicode, incluidos cirílico, jeroglíficos y emojis. Si usas ASCII para cadenas en español, los datos se perderán.

\n\n

Cómo decodificar Base64 de vuelta a una cadena

\n\n

El proceso inverso — la decodificación — se ve así:

\n\n
using System;\nusing System.Text;\n\nstring base64 = "SGVsbG8sIFdvcmxkIQ==";\nbyte[] bytes = Convert.FromBase64String(base64);\nstring decoded = Encoding.UTF8.GetString(bytes);\n\nConsole.WriteLine(decoded); // Salida: Hello, World!
\n\n

Ten en cuenta: si codificaste la cadena en UTF-8, también debes decodificarla en UTF-8. De lo contrario, obtendrás caracteres extraños.

\n\n

Trabajo con datos binarios (imágenes, archivos)

\n\n

Base64 no se limita a cadenas. Puedes codificar cualquier dato binario, por ejemplo, una imagen o un PDF.

\n\n

Ejemplo: codificamos un arreglo de bytes en Base64

\n\n
byte[] imageBytes = File.ReadAllBytes("photo.jpg");\nstring base64Image = Convert.ToBase64String(imageBytes);\n\n// Ahora puedes guardar la cadena en JSON o enviarla por API\nConsole.WriteLine($"Longitud de la cadena Base64: {base64Image.Length} caracteres");
\n\n

Decodificamos de vuelta a un archivo:

\n\n
string base64Image = "..."; // tu cadena\nbyte[] imageBytes = Convert.FromBase64String(base64Image);\nFile.WriteAllBytes("decoded_photo.jpg", imageBytes);
\n\n

Importante: Base64 aumenta el tamaño de los datos aproximadamente un 33%. Si tienes una imagen de 1 MB, después de la codificación pesará ~1.33 MB como cadena.

\n\n

Errores típicos y cómo evitarlos

\n\n

Incluso los desarrolladores experimentados a veces tropiezan con Base64. Estos son los errores más comunes:

\n\n

Blogs

Book Recommendations