本文為機器翻譯文章。如需檢視英文版,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

Convert.FromBase64String 方法 (String)

 

將指定的字串 (將二進位資料編碼為 Base-64 位數) 轉換為相等的 8 位元不帶正負號的整數陣列。

命名空間:   System
組件:  mscorlib (於 mscorlib.dll)

public static byte[] FromBase64String(
	string s
)

參數

s
Type: System.String

要轉換的字串。

傳回值

Type: System.Byte[]

8 位元不帶正負號的整數且與 s 相等的陣列。

Exception Condition
ArgumentNullException

snull

FormatException

忽略空白字元的 s 長度,不是零或 4 的倍數。

-或-

s 的格式無效。 s 包含非 Base-64 字元、超過兩個填補字元,或在填補字元中有非空白字元。

s為 base 64 數字、 空格字元和尾端填補字元所組成。 以遞增順序,從零 base 64 數字是否為大寫字元"A"到"Z"、 小寫字元"a"到"z"、"0"到"9"的數字和符號"+"和"/"。

空白字元,及其 Unicode 名稱和十六進位的字碼指標,都使用定位字元 (字元表格,U + 0009),新行換行字元 (U + 000A)、 歸位字元 (歸位字元、 U + 000d) 和空白 (空格、 U + 0020)。 任意數目的空格字元可出現在s因為所有的空格字元會被忽略。

用處的字元,"="做為尾端填補。 結尾s可以包含零個、 一個或兩個填補字元。

System_CAPS_important重要

FromBase64String方法設計來處理單一字串,包含要解碼的所有資料。 若要解碼資料流的 base-64 字元資料,使用System.Security.Cryptography.FromBase64Transform類別。

下列範例會使用ToBase64String(Byte[])方法,將位元組陣列轉換 (base-64) uuencode 編碼字串,然後呼叫FromBase64String(String)方法,以還原原始的位元組陣列。

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 sring.
       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

以下是更複雜的範例會建立 32 位元整數的 20 個元素陣列。 然後它會使用BitConverter.GetBytes(Int32)方法,將每個項目轉換成位元組陣列,它會將儲存在緩衝區中的適當位置呼叫Array.Copy(Array, Int32, Array, Int32, Int32)方法。 這個緩衝區會接著傳遞給ToBase64String(Byte[])方法建立的 (base-64) uuencode 編碼字串。 然後它會呼叫FromBase64String(String)方法來解碼 uuencode 編碼字串,並呼叫BitConverter.ToInt32方法,將每一組的四個位元組 (32 位元整數的大小) 轉換成整數。 範例輸出顯示已成功還原原始的陣列。

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 }

通用 Windows 平台
自 8 起供應
.NET Framework
自 1.1 起供應
可攜式類別庫
提供支援︰ 可攜式 .NET 平台
Silverlight
自 2.0 起供應
Windows Phone Silverlight
自 7.0 起供應
Windows Phone
自 8.1 起供應
回到頁首
顯示: