FromBase64CharArray Method

Convert.FromBase64CharArray Method

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Converts a subset of a Unicode character array, which encodes binary data as base 64 digits, to an equivalent 8-bit unsigned integer array. Parameters specify the subset in the input array and the number of elements to convert.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

'Declaration
Public Shared Function FromBase64CharArray ( _
	inArray As Char(), _
	offset As Integer, _
	length As Integer _
) As Byte()

Parameters

inArray
Type: System.Char ()
A Unicode character array.
offset
Type: System.Int32
A position within inArray.
length
Type: System.Int32
The number of elements in inArray to convert.

Return Value

Type: System.Byte ()
An array of 8-bit unsigned integers equivalent to length elements at position offset in inArray.

ExceptionCondition
ArgumentNullException

inArray is Nothing.

ArgumentOutOfRangeException

offset or length is less than 0.

-or-

offset plus length indicates a position not within inArray.

FormatException

The length of inArray, ignoring white space characters, is not zero or a multiple of 4.

-or-

The format of inArray is invalid. inArray contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters.

inArray is composed of base 64 digits, white space characters, and trailing padding characters. The base 64 digits in ascending order from zero are the uppercase characters 'A' to 'Z', lowercase characters 'a' to 'z', numerals '0' to '9', and the symbols '+' and '/'.

The white space characters, and their Unicode names and hexadecimal code points, are tab (CHARACTER TABULATION, U+0009), newline (LINE FEED, U+000A), carriage return (CARRIAGE RETURN, U+000D), and blank (SPACE, U+0020). An arbitrary number of white space characters can appear in inArray because all white space characters are ignored.

The valueless character, '=', is used for trailing padding. The end of inArray can consist of zero, one, or two padding characters.

The following example demonstrates the ToBase64CharArray method. The input is divided into groups of three bytes (24 bits) each. Consequently, each group consists of four 6-bit numbers where each number ranges from decimal 0 to 63. In this example, there are 85 3-byte groups with one byte remaining. The first group consists of the hexadecimal values 00, 01, and 02, which yield four 6-bit values equal to decimal 0, 0, 4, and 2. Those four values correspond to the base 64 digits, 'A', 'A', 'E', and 'C', at the beginning of the output.

If there isn't an integral number of 3-byte groups, the remaining bytes are effectively padded with zeroes to form a complete group. In this example, the value of the last byte is hexadecimal FF. The first 6 bits are equal to decimal 63, which corresponds to the base 64 digit '/' at the end of the output, and the next 2 bits are padded with zeroes to yield decimal 48, which corresponds to the base 64 digit, 'w'. The last two 6-bit values are padding and correspond to the valueless padding character, '='.


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

Class Example
   Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
      Dim byteArray1(255) As Byte
      Dim byteArray2(255) As Byte
      Dim charArray(351) As Char
      Dim charArrayLength As Integer
      Dim nl As String = vbCrLf

      Dim ruler1a As String = "         1         2         3         4"
      Dim ruler2a As String = "1234567890123456789012345678901234567890"
      Dim ruler3a As String = "----+----+----+----+----+----+----+----+"
      Dim ruler1b As String = "         5         6         7      "
      Dim ruler2b As String = "123456789012345678901234567890123456"
      Dim ruler3b As String = "----+----+----+----+----+----+----+-"
      Dim ruler As String = 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) & vbCrLf
      Dim x As Integer
      For x = 0 To byteArray1.Length - 1
         byteArray1(x) = CByte(x)
         outputBlock.Text &= String.Format("{0:X2} ", byteArray1(x))
         If (x + 1) Mod 20 = 0 Then
            outputBlock.Text &= vbCrLf
         End If
      Next x
      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." & vbCrLf
      outputBlock.Text &= String.Format("   Output: A Char array (length = {0}). ", charArrayLength)
      outputBlock.Text &= String.Format("The elements of the array are:{0}", nl) & vbCrLf
      outputBlock.Text &= ruler & vbCrLf
      outputBlock.Text &= New [String](charArray) & vbCrLf
      outputBlock.Text &= vbCrLf

      ' 3) Convert the Char array back to a Byte array.
      outputBlock.Text &= "3) Convert the Char array to an output Byte array." & vbCrLf
      byteArray2 = Convert.FromBase64CharArray(charArray, 0, charArrayLength)

      ' 4) Are the input and output Byte arrays equivalent?
      outputBlock.Text &= String.Format("The output Byte array is equal to the input Byte array?: {0}", _
                            ArraysAreEqual(byteArray1, byteArray2))
   End Sub 'Main

   Public Shared Function ArraysAreEqual(ByVal a1() As Byte, ByVal a2() As Byte) As Boolean
      If a1.Length <> a2.Length Then
         Return False
      End If
      Dim i As Integer
      For i = 0 To a1.Length - 1
         If a1(i) <> a2(i) Then
            Return False
         End If
      Next i
      Return True
   End Function 'ArraysAreEqual
End Class 'Sample
'
'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

Supported in: 8.1, 8.0, 7.1, 7.0

Windows Phone

Show:
© 2017 Microsoft