Ler en inglés

Compartir por


Convert.FromBase64String(String) Método

Definición

Convierte la cadena especificada, que codifica los datos binarios como dígitos en base 64, en una matriz equivalente de enteros de 8 bits sin signo.

C#
public static byte[] FromBase64String (string s);

Parámetros

s
String

Cadena que se va a convertir.

Devoluciones

Byte[]

Una matriz de enteros de 8 bits sin signo equivalente a s.

Excepciones

La longitud de s, pasando por alto los espacios en blanco, no es cero ni un múltiplo de 4.

O bien

El formato de s no es válido. s contiene un carácter que no es de base 64, más de dos caracteres de relleno o un carácter que no es un espacio en blanco entre los caracteres de relleno.

Ejemplos

En el ejemplo siguiente se usa el ToBase64String(Byte[]) método para convertir una matriz de bytes en una cadena codificada en UU (base-64) y, a continuación, se llama al FromBase64String(String) método para restaurar la matriz de bytes original.

C#
using System;

public class Example
{
   public static void Main()
   {
       // Define a byte array.
       byte[] bytes = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 };
       Console.WriteLine("The byte array: ");
       Console.WriteLine("   {0}\n", BitConverter.ToString(bytes));

       // Convert the array to a base 64 string.
       string s = Convert.ToBase64String(bytes);
       Console.WriteLine("The base 64 string:\n   {0}\n", s);

       // Restore the byte array.
       byte[] newBytes = Convert.FromBase64String(s);
       Console.WriteLine("The restored byte array: ");
       Console.WriteLine("   {0}\n", BitConverter.ToString(newBytes));
   }
}
// The example displays the following output:
//     The byte array:
//        02-04-06-08-0A-0C-0E-10-12-14
//
//     The base 64 string:
//        AgQGCAoMDhASFA==
//
//     The restored byte array:
//        02-04-06-08-0A-0C-0E-10-12-14

A continuación se muestra un ejemplo más complejo que crea una matriz de 20 elementos de enteros de 32 bits. A continuación, usa el BitConverter.GetBytes(Int32) método para convertir cada elemento en una matriz de bytes, que almacena en la posición adecuada en un búfer llamando al Array.Copy(Array, Int32, Array, Int32, Int32) método . A continuación, este búfer se pasa al ToBase64String(Byte[]) método para crear una cadena codificada en UU (base-64). A continuación, llama al FromBase64String(String) método para descodificar la cadena codificada en UU y llama al BitConverter.ToInt32 método para convertir cada conjunto de cuatro bytes (el tamaño de un entero de 32 bits) en un entero. La salida del ejemplo muestra que la matriz original se ha restaurado correctamente.

C#
using System;

public class Example
{
   public static void Main()
   {
      // Define an array of 20 elements and display it.
      int[] arr = new int[20];
      int value = 1;
      for (int ctr = 0; ctr <= arr.GetUpperBound(0); ctr++) {
         arr[ctr] = value;
         value = value * 2 + 1;
      }
      DisplayArray(arr);

      // Convert the array of integers to a byte array.
      byte[] bytes = new byte[arr.Length * 4];
      for (int ctr = 0; ctr < arr.Length; ctr++) {
         Array.Copy(BitConverter.GetBytes(arr[ctr]), 0,
                    bytes, ctr * 4, 4);
      }

      // Encode the byte array using Base64 encoding
      String base64 = Convert.ToBase64String(bytes);
      Console.WriteLine("The encoded string: ");
      for (int ctr = 0; ctr <= base64.Length / 50; ctr++)
         Console.WriteLine(base64.Substring(ctr * 50,
                                            ctr * 50 + 50 <= base64.Length
                                               ? 50 : base64.Length - ctr * 50));
      Console.WriteLine();

      // Convert the string back to a byte array.
      byte[] newBytes = Convert.FromBase64String(base64);

      // Convert the byte array back to an integer array.
      int[] newArr = new int[newBytes.Length/4];
      for (int ctr = 0; ctr < newBytes.Length / 4; ctr ++)
         newArr[ctr] = BitConverter.ToInt32(newBytes, ctr * 4);

      DisplayArray(newArr);
   }

   private static void DisplayArray(Array arr)
   {
      Console.WriteLine("The array:");
      Console.Write("{ ");
      for (int ctr = 0; ctr < arr.GetUpperBound(0); ctr++) {
         Console.Write("{0}, ", arr.GetValue(ctr));
         if ((ctr + 1) % 10 == 0)
            Console.Write("\n  ");
      }
      Console.WriteLine("{0} {1}", arr.GetValue(arr.GetUpperBound(0)), "}");
      Console.WriteLine();
   }
}
// The example displays the following output:
// The array:
// { 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023,
//   2047, 4095, 8191, 16383, 32767, 65535, 131071, 262143, 524287, 1048575 }
//
// The encoded string:
// AQAAAAMAAAAHAAAADwAAAB8AAAA/AAAAfwAAAP8AAAD/AQAA/w
// MAAP8HAAD/DwAA/x8AAP8/AAD/fwAA//8AAP//AQD//wMA//8H
//
// The array:
// { 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023,
//   2047, 4095, 8191, 16383, 32767, 65535, 131071, 262143, 524287, 1048575 }

Comentarios

s se compone de dígitos base 64, caracteres de espacio en blanco y caracteres de relleno final. Los dígitos base-64 en orden ascendente de cero son los caracteres en mayúsculas "A" a "Z", caracteres en minúsculas "a" a "z", números "0" a "9", y los símbolos "+" y "/".

Los caracteres de espacio en blanco y sus nombres Unicode y sus puntos de código hexadecimales son tabulaciones (CHARACTER TABULATION, U+0009), newline (LINE FEED, U+000A), retorno de carro (RETORNO DE CARRO, U+000D) y en blanco (SPACE, U+0020). Un número arbitrario de caracteres de espacio en blanco puede aparecer en s porque se omiten todos los caracteres de espacio en blanco.

El carácter sin valor , "=", se usa para relleno final. El final de s puede constar de cero, uno o dos caracteres de relleno.

Importante

El FromBase64String método está diseñado para procesar una sola cadena que contiene todos los datos que se van a descodificar. Para descodificar los datos de caracteres base-64 de una secuencia, use la System.Security.Cryptography.FromBase64Transform clase .

Se aplica a

Produto Versións
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Consulte también