导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

Convert.FromBase64CharArray 方法

2013/12/13

将 Unicode 字符数组的子集(它将二进制数据编码为以 64 为基数的数字)转换成等效的 8 位无符号整数数组。参数指定输入数组的子集以及要转换的元素数。

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

public static byte[] FromBase64CharArray(
	char[] inArray,
	int offset,
	int length
)

参数

inArray
类型: System.Char []
Unicode 字符数组。
offset
类型: System.Int32
inArray 内的一个位置。
length
类型: System.Int32
要转换的 inArray 中的元素数。

返回值

类型: System.Byte []
等效于 inArray 中位于 offset 位置的 length 元素的 8 位无符号整数数组。

异常条件
ArgumentNullException

inArraynull

ArgumentOutOfRangeException

offsetlength 小于 0。

- 或 -

offsetlength 指示不在 inArray 内的位置。

FormatException

inArray 的长度(忽略空白字符)不是 0 或 4 的倍数。

- 或 -

inArray 的格式无效。inArray 包含一个基数不是 64 的字符、两个以上的填充字符或者在填充字符中包含非空白字符。

inArray 由以 64 为基数的数字、空白字符和尾随填充字符组成。从零开始以升序排列的以 64 为基数的数字为大写字符“A”到“Z”、小写字符“a”到“z”、数字“0”到“9”以及符号“+”和“/”。

空白字符及其 Unicode 名称和十六进制码位为:制表符(CHARACTER TABULATION,U+0009)、换行符(LINE FEED,U+000A)、回车符(CARRIAGE RETURN,U+000D)和空格符(SPACE,U+0020)。inArray 中可以出现任意数目的空白字符,因为所有空白字符都将被忽略。

无值字符“=”用于尾部的空白。inArray 的末尾可以包含零个、一个或两个填充字符。

下面的示例说明 ToBase64CharArray 方法。以三个字节(24 位)一组的方式对输入分组。因此,每组都由 4 个 6 位的数字组成,其中每个数字的范围都从十进制的 0 到 63。此示例中,有 85 个 3 字节的组,以及剩余的一个字节。第一组由十六进制值 00、01 和 02 组成,这些值生成的四个 6 位值分别等于十进制的 0、0、4 和 2。这四个值对应于输出开始处以 64 为基数的数字的“A”、“A”、“E”和“C”。

如果不能形成整数数目的 3 字节组,则实际上会用零填充剩余字节以便形成一个完整的组。在本示例中,最后一个字节的值为十六进制的 FF。前 6 位等于十进制的 63(对应于输出结尾处的以 64 为基数的数字“/”),接下来的 2 位用零填充生成十进制的 48(对应于以 64 为基数的数字“w”)。最后两个 6 位值为空白并对应于无值填充字符“=”。


// This example demonstrates the Convert.ToBase64CharArray() and
//                               Convert.FromBase64CharArray methods

using System;

class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      byte[] byteArray1 = new byte[256];
      byte[] byteArray2 = new byte[256];
      char[] charArray = new char[352];
      int charArrayLength;
      string nl = "\n";

      string ruler1a = "         1         2         3         4";
      string ruler2a = "1234567890123456789012345678901234567890";
      string ruler3a = "----+----+----+----+----+----+----+----+";
      string ruler1b = "         5         6         7      ";
      string ruler2b = "123456789012345678901234567890123456";
      string ruler3b = "----+----+----+----+----+----+----+-";
      string ruler = String.Concat(ruler1a, ruler1b, nl,
                                     ruler2a, ruler2b, nl,
                                     ruler3a, ruler3b);

      // 1) Initialize and display a Byte array of arbitrary data.
      outputBlock.Text += String.Format("1) Input: A Byte array of arbitrary data.{0}", nl) + "\n";
      for (int x = 0; x < byteArray1.Length; x++)
      {
         byteArray1[x] = (byte)x;
         outputBlock.Text += String.Format("{0:X2} ", byteArray1[x]);
         if (((x + 1) % 20) == 0) outputBlock.Text += "\n";
      }
      outputBlock.Text += String.Format("{0}{0}", nl);

      // 2) Convert the input Byte array to a Char array, with newlines inserted.
      charArrayLength =
          Convert.ToBase64CharArray(byteArray1, 0, byteArray1.Length,
                                     charArray, 0);
      outputBlock.Text += "2) Convert the input Byte array to a Char array." + "\n";
      outputBlock.Text += String.Format("   Output: A Char array (length = {0}). ", charArrayLength);
      outputBlock.Text += String.Format("The elements of the array are:{0}", nl) + "\n";
      outputBlock.Text += ruler + "\n";
      outputBlock.Text += new String(charArray) + "\n";
      outputBlock.Text += "\n";

      // 3) Convert the Char array back to a Byte array.
      outputBlock.Text += "3) Convert the Char array to an output Byte array." + "\n";
      byteArray2 = Convert.FromBase64CharArray(charArray, 0, charArrayLength);

      // 4) Are the input and output Byte arrays equivalent?
      outputBlock.Text += String.Format("4) The output Byte array is equal to the input Byte array?: {0}",
                        ArraysAreEqual(byteArray1, byteArray2)) + "\n";
   }

   public static bool ArraysAreEqual(byte[] a1, byte[] a2)
   {
      if (a1.Length != a2.Length) return false;
      for (int i = 0; i < a1.Length; i++)
         if (a1[i] != a2[i]) return false;
      return true;
   }
}
/*
This example produces the following results:

1) Input: A Byte array of arbitrary data.

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13
14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27
28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B
3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63
64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77
78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B
8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3
B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7
C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB
DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF

2) Convert the input Byte array to a Char array.
   Output: A Char array (length = 352). The elements of the array are:

         1         2         3         4         5         6         7
1234567890123456789012345678901234567890123456789012345678901234567890123456
----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+-
AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4
OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmq
q6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj
5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==

3) Convert the Char array to an output Byte array.
4) The output Byte array is equal to the input Byte array?: True

*/


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示:
© 2015 Microsoft