Export (0) Print
Expand All

Convert.ToBase64CharArray Method

Converts the value of a subset of an 8-bit unsigned integer array to an equivalent subset of a Unicode character array consisting of base 64 digits. Parameters specify the subsets as offsets in the input and output arrays and the number of elements in the input array to convert.

[Visual Basic]
Public Shared Function ToBase64CharArray( _
   ByVal inArray() As Byte, _
   ByVal offsetIn As Integer, _
   ByVal length As Integer, _
   ByVal outArray() As Char, _
   ByVal offsetOut As Integer _
) As Integer
[C#]
public static int ToBase64CharArray(
 byte[] inArray,
 int offsetIn,
 int length,
 char[] outArray,
 int offsetOut
);
[C++]
public: static int ToBase64CharArray(
 unsigned char inArray __gc[],
 int offsetIn,
 int length,
 __wchar_t outArray __gc[],
 int offsetOut
);
[JScript]
public static function ToBase64CharArray(
   inArray : Byte[],
 offsetIn : int,
 length : int,
 outArray : Char[],
 offsetOut : int
) : int;

Parameters

inArray
An input array of 8-bit unsigned integers.
offsetIn
A position within inArray.
length
The number of elements of inArray to convert.
outArray
An output array of Unicode characters.
offsetOut
A position within outArray.

Return Value

A 32-bit signed integer containing the number of bytes in outArray.

Exceptions

Exception Type Condition
ArgumentNullException inArray or outArray is a null reference (Nothing in Visual Basic).
ArgumentOutOfRangeException offsetIn, offsetOut, or length is negative.

-or-

offsetIn plus length is greater than the length of inArray.

-or-

offsetOut plus the number of elements to return is greater than the length of outArray.

Remarks

The subset of length elements of inArray starting at position offsetIn, are taken as a numeric value and converted to a subset of elements in outArray starting at position offsetOut. The return value indicates the number of converted elements in outArray. The subset of outArray consists of base 64 digits.

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 valueless character, '=', is used for trailing padding.

offset and length are 32-bit signed numbers. offsetIn and offsetOut are zero-based array positions.

Example

[Visual Basic, C#, C++] The following sample demonstrates the ToBase64CharArray method, UUencoding (base 64 encoding) a binary stream and saving it to a file.

[Visual Basic] 
Public Sub EncodeWithCharArray()
   Dim inFile As System.IO.FileStream
   Dim binaryData() As Byte

   Try
      inFile = New System.IO.FileStream(inputFileName, _
                                        System.IO.FileMode.Open, _
                                        System.IO.FileAccess.Read)
      ReDim binaryData(inFile.Length)
      Dim bytesRead As Long = inFile.Read(binaryData, _
                                          0, _
                                          CInt(inFile.Length))
      inFile.Close()
   Catch exp As System.Exception
      ' Error creating stream or reading from it.
      System.Console.WriteLine("{0}", exp.Message)
      Return
   End Try

   ' Convert the binary input into Base64 UUEncoded output.
   ' Each 3 byte sequence in the source data becomes a 4 byte
   ' sequence in the character array. 
   Dim arrayLength As Long 
   arrayLength = (4 / 3) * binaryData.Length
   If arrayLength Mod 4 <> 0 Then
      arrayLength = arrayLength + 4 - arrayLength Mod 4
   End If

   Dim base64CharArray(arrayLength - 1) As Char
   Try
      System.Convert.ToBase64CharArray(binaryData, _
                                       0, _
                                       binaryData.Length, _
                                       base64CharArray, 0)
   Catch exp As System.ArgumentNullException
      System.Console.WriteLine("Binary data array is null.")
      Return
   Catch exp As System.ArgumentOutOfRangeException
      System.Console.WriteLine("Char Array is not large enough.")
      Return
   End Try

   ' Write the UUEncoded version to the output file.
   Dim outFile As System.IO.StreamWriter
   Try
      outFile = New System.IO.StreamWriter(outputFileName, _
                                           False, _
                                           System.Text.Encoding.ASCII)
      outFile.Write(base64CharArray)
      outFile.Close()
   Catch exp As System.Exception
      ' Error creating stream or writing to it.
      System.Console.WriteLine("{0}", exp.Message)
   End Try
End Sub

[C#] 
public void EncodeWithCharArray() {
    System.IO.FileStream inFile;     
    byte[]                 binaryData;

    try {
        inFile = new System.IO.FileStream(inputFileName,
                                          System.IO.FileMode.Open,
                                          System.IO.FileAccess.Read);
        binaryData = new Byte[inFile.Length];
        long bytesRead = inFile.Read(binaryData, 0,
                                    (int) inFile.Length);
        inFile.Close();
    }
    catch (System.Exception exp) {
        // Error creating stream or reading from it.
        System.Console.WriteLine("{0}", exp.Message);
        return;
    }

    // Convert the binary input into Base64 UUEncoded output.
    // Each 3 byte sequence in the source data becomes a 4 byte
    // sequence in the character array. 
    long arrayLength = (long) ((4.0d/3.0d) * binaryData.Length);
    
    // If array length is not divisible by 4, go up to the next
    // multiple of 4.
    if (arrayLength % 4 != 0) {
        arrayLength += 4 - arrayLength % 4;
    }
    
    char[] base64CharArray = new char[arrayLength];
    try {
        System.Convert.ToBase64CharArray(binaryData, 
                                         0,
                                         binaryData.Length,
                                         base64CharArray,
                                         0);
    }
    catch (System.ArgumentNullException) {
        System.Console.WriteLine("Binary data array is null.");
        return;
    }
    catch (System.ArgumentOutOfRangeException) {
        System.Console.WriteLine("Char Array is not large enough.");
        return;
    }

    // Write the UUEncoded version to the output file.
    System.IO.StreamWriter outFile; 
    try {
        outFile = new System.IO.StreamWriter(outputFileName,
                                        false,
                                        System.Text.Encoding.ASCII);             
        outFile.Write(base64CharArray);
        outFile.Close();
    }
    catch (System.Exception exp) {
        // Error creating stream or writing to it.
        System.Console.WriteLine("{0}", exp.Message);
    }
}

[C++] 
public:
   void EncodeWithCharArray() {
      FileStream* inFile;     
      Byte binaryData[];

      try {
         inFile = new FileStream(inputFileName,
            FileMode::Open,
            FileAccess::Read);
         binaryData = new Byte[(int)(inFile->Length)];
         long bytesRead = inFile->Read(binaryData, 0,
            (int) inFile->Length);
         inFile->Close();
      } catch (Exception* exp) {
         // Error creating stream or reading from it.
         Console::WriteLine(S" {0}", exp->Message);
         return;
      }

      // Convert the binary input into Base64 UUEncoded output.
      // Each 3 Byte sequence in the source data becomes a 4 Byte
      // sequence in the character array. 
      long arrayLength = (long) ((4.0/3.0) * binaryData->Length);

      // If array length is not divisible by 4, go up to the next
      // multiple of 4.
      if (arrayLength % 4 != 0) {
         arrayLength += 4 - arrayLength % 4;
      }

      Char base64CharArray[] = new Char[arrayLength];
      try {
         Convert::ToBase64CharArray(binaryData, 
            0,
            binaryData->Length,
            base64CharArray,
            0);
      } catch (ArgumentNullException*) {
         Console::WriteLine(S"Binary data array is null.");
         return;
      } catch (ArgumentOutOfRangeException*) {
         Console::WriteLine(S"Char Array is not large enough.");
         return;
      }

      // Write the UUEncoded version to the output file.
      StreamWriter* outFile; 
      try {
         outFile = new StreamWriter(outputFileName,
            false,
            Text::Encoding::ASCII);             
         outFile->Write(base64CharArray);
         outFile->Close();
      } catch (Exception* exp) {
         // Error creating stream or writing to it.
         Console::WriteLine(S" {0}", exp->Message);
      }
   }

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework

See Also

Convert Class | Convert Members | System Namespace

Show:
© 2014 Microsoft