Auf Englisch lesen

Freigeben über


Convert.ToBase64CharArray Methode

Definition

Konvertiert eine Teilmenge eines Arrays von 8-Bit-Ganzzahlen ohne Vorzeichen in eine entsprechende Teilmenge eines Arrays von Unicode-Zeichen, das mit Base-64-Ziffern codiert wurde.

Überlädt

ToBase64CharArray(Byte[], Int32, Int32, Char[], Int32, Base64FormattingOptions)

Konvertiert eine Teilmenge eines Arrays von 8-Bit-Ganzzahlen ohne Vorzeichen in eine entsprechende Teilmenge eines Arrays von Unicode-Zeichen, das mit Base-64-Ziffern codiert wurde. Parameter geben die Teilmengen als Offsets des Eingabe- und Ausgabearrays, die Anzahl der Elemente im zu konvertierenden Eingabearray sowie ggf. einzufügende Zeilenumbrüche im Ausgabearray an.

ToBase64CharArray(Byte[], Int32, Int32, Char[], Int32)

Konvertiert eine Teilmenge eines Arrays von 8-Bit-Ganzzahlen ohne Vorzeichen in eine entsprechende Teilmenge eines Arrays von Unicode-Zeichen, das mit Base-64-Ziffern codiert wurde. Parameter geben die Teilmengen als Offsets des Eingabe- und Ausgabearrays und die Anzahl der Elemente im zu konvertierenden Eingabearray an.

ToBase64CharArray(Byte[], Int32, Int32, Char[], Int32, Base64FormattingOptions)

Quelle:
Convert.cs
Quelle:
Convert.cs
Quelle:
Convert.cs

Konvertiert eine Teilmenge eines Arrays von 8-Bit-Ganzzahlen ohne Vorzeichen in eine entsprechende Teilmenge eines Arrays von Unicode-Zeichen, das mit Base-64-Ziffern codiert wurde. Parameter geben die Teilmengen als Offsets des Eingabe- und Ausgabearrays, die Anzahl der Elemente im zu konvertierenden Eingabearray sowie ggf. einzufügende Zeilenumbrüche im Ausgabearray an.

public static int ToBase64CharArray (byte[] inArray, int offsetIn, int length, char[] outArray, int offsetOut, Base64FormattingOptions options);
[System.Runtime.InteropServices.ComVisible(false)]
public static int ToBase64CharArray (byte[] inArray, int offsetIn, int length, char[] outArray, int offsetOut, Base64FormattingOptions options);

Parameter

inArray
Byte[]

Ein Eingabearray von 8-Bit-Ganzzahlen ohne Vorzeichen.

offsetIn
Int32

Eine Position in inArray.

length
Int32

Die Anzahl der zu konvertierenden Elemente aus inArray.

outArray
Char[]

Ein Ausgabearray von Unicode-Zeichen.

offsetOut
Int32

Eine Position in outArray.

options
Base64FormattingOptions

InsertLineBreaks, wenn nach je 76 Zeichen ein Zeilenumbruch eingefügt werden soll, oder None, wenn keine Zeilenumbrüche eingefügt werden sollen.

Gibt zurück

Eine 32-Bit-Ganzzahl mit Vorzeichen mit der Anzahl von Bytes in outArray.

Attribute

Ausnahmen

inArray oder outArray ist null.

offsetIn, offsetOut oder length ist ein negativer Wert.

- oder -

offsetIn plus length ist größer als die Länge von inArray.

- oder -

offsetOut plus die Anzahl der zurückzugebenden Elemente ist größer als die Länge von outArray.

options ist kein gültiger Base64FormattingOptions-Wert.

Beispiele

Das folgende Beispiel veranschaulicht die ToBase64CharArray Methode. Die Eingabe ist in Gruppen von jeweils drei Bytes (24 Bit) unterteilt. Folglich besteht jede Gruppe aus vier 6-Bit-Zahlen, wobei jede Zahl von dezimal 0 bis 63 liegt. In diesem Beispiel gibt es 85 3-Byte-Gruppen mit einem Byte. Die erste Gruppe besteht aus den Hexadezimalwerten 00, 01 und 02, die vier 6-Bit-Werte ergeben, die dem Dezimalwert 0, 0, 4 und 2 entsprechen. Diese vier Werte entsprechen den Basis-64 Ziffern "A", "A", "E" und "C" am Anfang der Ausgabe.

Wenn keine vollständige Anzahl von 3-Byte-Gruppen vorhanden ist, werden die verbleibenden Bytes effektiv mit Nullen aufgefüllt, um eine vollständige Gruppe zu bilden. In diesem Beispiel ist der Wert des letzten Byte hexadezimales FF. Die ersten 6 Bits sind gleich dezimal 63, was der Basis-64-Ziffer "/" am Ende der Ausgabe entspricht, und die nächsten 2 Bits sind mit Nullen aufgefüllt, um dezimale 48 zu erhalten, was der Basis-64-Ziffer "w" entspricht. Die letzten beiden 6-Bit-Werte sind aufgefüllt und entsprechen dem wertlosen Auffüllzeichen "=".

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

using System;

class Sample
{
    public static void Main()
    {
    byte[] byteArray1 = new byte[256];
    byte[] byteArray2 = new byte[256];
    char[] charArray  = new char[352];
    int charArrayLength;
    string nl = Environment.NewLine;

    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.
    Console.WriteLine("1) Input: A Byte array of arbitrary data.{0}", nl);
    for (int x = 0; x < byteArray1.Length; x++)
    {
    byteArray1[x] = (byte)x;
    Console.Write("{0:X2} ", byteArray1[x]);
    if (((x+1)%20) == 0) Console.WriteLine();
    }
    Console.Write("{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, Base64FormattingOptions.InsertLineBreaks);
    Console.WriteLine("2) Convert the input Byte array to a Char array with newlines.");
    Console.Write("   Output: A Char array (length = {0}). ", charArrayLength);
    Console.WriteLine("The elements of the array are:{0}", nl);
    Console.WriteLine(ruler);
    Console.WriteLine(new String(charArray));
    Console.WriteLine();

// 3) Convert the Char array back to a Byte array.
    Console.WriteLine("3) Convert the Char array to an output Byte array.");
    byteArray2 = Convert.FromBase64CharArray(charArray, 0, charArrayLength);

// 4) Are the input and output Byte arrays equivalent?
    Console.WriteLine("4) The output Byte array is equal to the input Byte array: {0}",
                      ArraysAreEqual(byteArray1, byteArray2));
    }

    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 with newlines.
   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

*/

Hinweise

Die Teilmenge der length Elemente des inArray Parameters ab Position offsetInwird als numerischer Wert verwendet und in eine Teilmenge von Elementen im Parameter konvertiert, die an der outArray Position offsetOutbeginnen. Der Rückgabewert gibt die Anzahl der konvertierten Elemente in outArrayan. Die Teilmenge von outArray besteht aus Basis-64-Ziffern.

Die Basis-64-Ziffern in aufsteigender Reihenfolge von 0 sind die Großbuchstaben "A" bis "Z", die Kleinbuchstaben "a" bis "z", die Ziffern "0" bis "9" und die Symbole "+" und "/". Das wertlose Zeichen "=" wird für die nachgestellte Auffüllung verwendet.

Die offset Parameter und length sind 32-Bit-Vorzeichennummern. Die offsetIn Parameter und offsetOut sind nullbasierte Arraypositionen.

Wichtig

Die ToBase64CharArray Methode ist für die Verarbeitung eines einzelnen Bytearrays konzipiert, das alle zu codierenden Daten enthält. Verwenden Sie die System.Security.Cryptography.ToBase64Transform -Klasse, um ein Basis-64-Zeichenarray aus einem Bytestream zu erstellen.

Wenn der options Parameter auf InsertLineBreaks festgelegt ist und die Ausgabe der Konvertierung länger als 76 Zeichen ist, wird alle 76 Zeichen ein Zeilenumbruch eingefügt. Ein Zeilenumbruch wird als Wagenrücklaufzeichen (U+000D) gefolgt von einem Zeilenvorschubzeichen (U+000A) definiert. Weitere Informationen finden Sie unter RFC 2045, "Multipurpose Internet Mail Extensions", unter https://www.rfc-editor.org/.

Weitere Informationen

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

ToBase64CharArray(Byte[], Int32, Int32, Char[], Int32)

Quelle:
Convert.cs
Quelle:
Convert.cs
Quelle:
Convert.cs

Konvertiert eine Teilmenge eines Arrays von 8-Bit-Ganzzahlen ohne Vorzeichen in eine entsprechende Teilmenge eines Arrays von Unicode-Zeichen, das mit Base-64-Ziffern codiert wurde. Parameter geben die Teilmengen als Offsets des Eingabe- und Ausgabearrays und die Anzahl der Elemente im zu konvertierenden Eingabearray an.

public static int ToBase64CharArray (byte[] inArray, int offsetIn, int length, char[] outArray, int offsetOut);

Parameter

inArray
Byte[]

Ein Eingabearray von 8-Bit-Ganzzahlen ohne Vorzeichen.

offsetIn
Int32

Eine Position in inArray.

length
Int32

Die Anzahl der zu konvertierenden Elemente aus inArray.

outArray
Char[]

Ein Ausgabearray von Unicode-Zeichen.

offsetOut
Int32

Eine Position in outArray.

Gibt zurück

Eine 32-Bit-Ganzzahl mit Vorzeichen mit der Anzahl von Bytes in outArray.

Ausnahmen

inArray oder outArray ist null.

offsetIn, offsetOut oder length ist ein negativer Wert.

- oder -

offsetIn plus length ist größer als die Länge von inArray.

- oder -

offsetOut plus die Anzahl der zurückzugebenden Elemente ist größer als die Länge von outArray.

Beispiele

Das folgende Beispiel veranschaulicht die Verwendung der ToBase64CharArray -Methode zum UUencoden (Codieren in Basis 64) eines binären Datenstroms und anschließendes Speichern der Codierung in einer Datei.

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);
   }
}

Hinweise

Die Teilmenge der length Elemente, die inArray an position offsetInbeginnen, werden als numerischer Wert genommen und in eine Teilmenge von Elementen konvertiert, die outArray an position offsetOutbeginnen. Der Rückgabewert gibt die Anzahl der konvertierten Elemente in outArrayan. Die Teilmenge von outArray besteht aus Basis-64-Ziffern.

Die Basis-64-Ziffern in aufsteigender Reihenfolge von 0 sind die Großbuchstaben "A" bis "Z", die Kleinbuchstaben "a" bis "z", die Ziffern "0" bis "9" und die Symbole "+" und "/". Das wertlose Zeichen "=" wird für die nachgestellte Füllung verwendet.

Die offset Parameter und length sind 32-Bit-Vorzeichennummern. Die offsetIn Parameter und offsetOut sind nullbasierte Arraypositionen.

Wichtig

Die ToBase64CharArray Methode ist für die Verarbeitung eines einzelnen Bytearrays konzipiert, das alle zu codierenden Daten enthält. Verwenden Sie die System.Security.Cryptography.ToBase64Transform -Klasse, um ein Basis-64-Zeichenarray aus einem Bytestream zu erstellen.

Weitere Informationen

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0