이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

Convert.FromBase64CharArray 메서드

2013-12-13

base64 숫자의 이진 데이터를 해당하는 8비트 부호 없는 정수 배열로 인코딩하는 방법으로 유니코드 문자 배열의 하위 집합을 변환합니다. 매개 변수에는 입력 배열의 하위 집합과 변환할 요소 수를 지정합니다.

Namespace:  System
어셈블리:  mscorlib(mscorlib.dll)
public static byte[] FromBase64CharArray(
	char[] inArray,
	int offset,
	int length
)

매개 변수

inArray
형식: System.Char []
유니코드 문자 배열입니다.
offset
형식: System.Int32
inArray 내의 위치입니다.
length
형식: System.Int32
inArray의 요소 중에서 변환할 요소의 수입니다.

반환 값

형식: System.Byte []
inArrayoffset 위치에 있는 length 요소에 해당하는 8비트 부호 없는 정수를 반환합니다.
예외조건
ArgumentNullException

inArraynull인 경우

ArgumentOutOfRangeException

offset 또는 length가 0 미만인 경우

-또는-

offsetlength의 합이 inArray 내에 있지 않은 위치를 나타내는 경우

FormatException

공백 문자를 제외한 inArray의 길이가 0이 아니거나 4의 배수가 아닌 경우

-또는-

inArray의 형식이 잘못된 경우. inArray의 채움 문자에 Base 64 숫자가 아닌 문자, 세 개 이상의 채움 문자 또는 공백이 아닌 문자가 포함되어 있습니다.

inArray는 Base 64 숫자, 공백 문자 및 뒤쪽 채움 문자로 구성됩니다. 0부터 오름차순으로 정렬한 Base 64 숫자는 'A'에서 'Z'까지의 대문자, 'a'에서 'z'까지의 소문자, '0'에서 '9'까지의 숫자, 그리고 '+' 및 '/' 기호입니다.

공백 문자, 해당 유니코드 이름 및 16진수 코드 포인트는 탭(CHARACTER TABULATION, U+0009), 줄바꿈(LINE FEED, U+000A), 캐리지 리턴(CARRIAGE RETURN, U+000D) 및 공백(SPACE, U+0020)입니다. 모든 공백 문자는 무시되기 때문에 여러 개의 공백 문자가 inArray에 나타날 수 있습니다.

값이 없는 '=' 문자는 뒤쪽 여백에 사용됩니다. inArray의 끝에는 채움 문자가 없거나 채움 문자가 한 개나 두 개 있을 수 있습니다.

다음 예제에서는 ToBase64CharArray 메서드를 보여 줍니다. 입력은 각각 3바이트(24비트)의 그룹으로 나뉩니다. 따라서 각 그룹은 범위가 10진수 0부터 63까지인 6비트 수 네 개로 구성됩니다. 이 예제에는 3바이트 그룹 85개와 나머지 한 바이트가 있습니다. 첫 번째 그룹은 16진수 값 00, 01 및 02로 구성되어 있습니다. 이것은 10진수 0, 0, 4 및 2와 동일한 6비트 값 4개입니다. 네 값은 출력의 시작 부분에 있는 Base 64 숫자 'A', 'A', 'E' 및 'C'에 해당합니다.

3바이트 그룹의 정수가 없으면 나머지 바이트가 0으로 채워져 완전한 그룹을 형성합니다. 이 예제에서 마지막 바이트의 값은 16진수 FF 입니다. 첫 6비트는 십진법 63과 같고 이는 출력물의 맨 끝에 있는 base64 숫자 ‘/’에 해당하며, 그다음 2비트는 0으로 채워져 십진법 48이 되고 이는 base64 숫자, ‘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

이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.
표시:
© 2014 Microsoft. All rights reserved.