Auf Englisch lesen

Freigeben über


UTF32Encoding.GetChars Methode

Definition

Decodiert eine Bytefolge in Zeichen.

Überlädt

GetChars(Byte*, Int32, Char*, Int32)

Decodiert eine Bytefolge beginnend am angegebenen Bytezeiger in Zeichen, die beginnend am angegebenen Zeichenzeiger gespeichert werden.

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

Decodiert eine Bytefolge aus dem angegebenen Bytearray in das angegebene Zeichenarray.

GetChars(Byte*, Int32, Char*, Int32)

Quelle:
UTF32Encoding.cs
Quelle:
UTF32Encoding.cs
Quelle:
UTF32Encoding.cs

Wichtig

Diese API ist nicht CLS-kompatibel.

Decodiert eine Bytefolge beginnend am angegebenen Bytezeiger in Zeichen, die beginnend am angegebenen Zeichenzeiger gespeichert werden.

[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);

Parameter

bytes
Byte*

Ein Zeiger auf das erste zu decodierende Byte.

byteCount
Int32

Die Anzahl der zu decodierenden Bytes.

chars
Char*

Ein Zeiger auf die Position, an der mit dem Schreiben der sich ergebenden Zeichen begonnen werden soll.

charCount
Int32

Die maximale Anzahl der zu schreibenden Zeichen.

Gibt zurück

Die durch chars angegebene tatsächliche Anzahl der Zeichen, die am Speicherort geschrieben wurden.

Attribute

Ausnahmen

bytes ist null.

- oder -

chars ist null.

byteCount oder charCount ist kleiner als 0.

Die Fehlererkennung ist aktiviert, und bytes enthält eine ungültige Folge von Bytes.

- oder -

charCount ist niedriger als die sich ergebende Anzahl von Zeichen.

Es ist ein Fallback aufgetreten (weitere Informationen finden Sie unter Zeichencodierung in .NET).

- und -

Für DecoderFallback ist DecoderExceptionFallback festgelegt.

Hinweise

Um die genaue Arraygröße zu berechnen, die für GetChars das Speichern der resultierenden Zeichen erforderlich ist, rufen Sie die -Methode auf GetCharCount . Um die maximale Array Größe zu berechnen, müssen Sie die-Methode aufzurufen GetMaxCharCount . Die GetCharCount Methode weist in der Regel weniger Arbeitsspeicher zu, während die GetMaxCharCount Methode im Allgemeinen schneller ausgeführt wird.

Bei der Fehlererkennung bewirkt eine ungültige Sequenz, dass diese Methode ein ArgumentExceptionauslöst. Ohne Fehlererkennung werden ungültige Sequenzen ignoriert, und es wird keine Ausnahme ausgelöst.

Wenn der Bereich der zu decodierenden Bytes die Bytereihenfolgemarkierung (BOM) umfasst und das Bytearray von einer Methode eines nicht BOM-fähigen Typs zurückgegeben wurde, wird das Zeichen U+FFFE in das von dieser Methode zurückgegebene Zeichenarray eingeschlossen. Sie können sie entfernen, indem Sie die String.TrimStart -Methode aufrufen.

Zu konvertierende Daten, z. B. Daten, die aus einem Stream gelesen werden, sind möglicherweise nur in sequenziellen Blöcken verfügbar. In diesem Fall oder wenn die Menge der Daten so umfangreich ist, dass er in kleinere Blöcke aufgeteilt werden muss, verwendet die Anwendung die Decoder oder die Encoder gebotenen der GetDecoder Methode oder die GetEncoder Methode bzw.

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 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.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Quelle:
UTF32Encoding.cs
Quelle:
UTF32Encoding.cs
Quelle:
UTF32Encoding.cs

Decodiert eine Bytefolge aus dem angegebenen Bytearray in das angegebene Zeichenarray.

public override int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex);

Parameter

bytes
Byte[]

Das Bytearray, das die zu decodierende Bytefolge enthält.

byteIndex
Int32

Der Index des ersten zu decodierenden Bytes.

byteCount
Int32

Die Anzahl der zu decodierenden Bytes.

chars
Char[]

Das Zeichenarray, das die sich ergebenden Zeichen enthalten soll.

charIndex
Int32

Der Index, an dem mit dem Schreiben der sich ergebenden Zeichen begonnen werden soll.

Gibt zurück

Die tatsächliche Anzahl der Zeichen, die in chars geschrieben werden.

Ausnahmen

bytes ist null.

- oder -

chars ist null.

byteIndex, byteCount oder charIndex ist kleiner als 0 (null).

- oder -

byteindex und byteCount geben keinen gültigen Bereich in bytesan.

- oder -

charIndex ist kein gültiger Index in chars.

Die Fehlererkennung ist aktiviert, und bytes enthält eine ungültige Folge von Bytes.

- oder -

chars hat von charIndex bis zum Ende des Arrays nicht genügend Kapazität, um die sich ergebenden Zeichen aufzunehmen.

Es ist ein Fallback aufgetreten (weitere Informationen finden Sie unter Zeichencodierung in .NET).

- und -

Für DecoderFallback ist DecoderExceptionFallback festgelegt.

Beispiele

Im folgenden Beispiel wird eine Zeichenfolge in ein Bytearray codiert und dann in ein Zeichen Array decodiert.

using System;
using System.Text;

public class SamplesUTF32Encoding  {

   public static void Main()  {

      // Create two instances of UTF32Encoding: one with little-endian byte order and one with big-endian byte order.
      UTF32Encoding u32LE = new UTF32Encoding( false, true, true );
      UTF32Encoding u32BE = new UTF32Encoding( true, true, true );

      // Create byte arrays from the same string containing the following characters:
      //    Latin Small Letter Z (U+007A)
      //    Latin Small Letter A (U+0061)
      //    Combining Breve (U+0306)
      //    Latin Small Letter AE With Acute (U+01FD)
      //    Greek Small Letter Beta (U+03B2)
      //    a high-surrogate value (U+D8FF)
      //    a low-surrogate value (U+DCFF)
      String myStr = "za\u0306\u01FD\u03B2\uD8FF\uDCFF";

      // barrBE uses the big-endian byte order.
      byte[] barrBE = new byte[u32BE.GetByteCount( myStr )];
      u32BE.GetBytes( myStr, 0, myStr.Length, barrBE, 0 );

      // barrLE uses the little-endian byte order.
      byte[] barrLE = new byte[u32LE.GetByteCount( myStr )];
      u32LE.GetBytes( myStr, 0, myStr.Length, barrLE, 0 );

      // Get the char counts and decode the byte arrays.
      Console.Write( "BE array with BE encoding : " );
      PrintCountsAndChars( barrBE, u32BE );
      Console.Write( "LE array with LE encoding : " );
      PrintCountsAndChars( barrLE, u32LE );

      // Decode the byte arrays using an encoding with a different byte order.
      Console.Write( "BE array with LE encoding : " );
      try  {
         PrintCountsAndChars( barrBE, u32LE );
      }
      catch ( System.ArgumentException e )  {
         Console.WriteLine( e.Message );
      }

      Console.Write( "LE array with BE encoding : " );
      try  {
         PrintCountsAndChars( barrLE, u32BE );
      }
      catch ( System.ArgumentException e )  {
         Console.WriteLine( e.Message );
      }
   }

   public static void PrintCountsAndChars( byte[] bytes, Encoding enc )  {

      // Display the name of the encoding used.
      Console.Write( "{0,-25} :", enc.ToString() );

      // Display the exact character count.
      int iCC  = enc.GetCharCount( bytes );
      Console.Write( " {0,-3}", iCC );

      // Display the maximum character count.
      int iMCC = enc.GetMaxCharCount( bytes.Length );
      Console.Write( " {0,-3} :", iMCC );

      // Decode the bytes and display the characters.
      char[] chars = new char[iCC];
      enc.GetChars( bytes, 0, bytes.Length, chars, 0 );
      Console.WriteLine( chars );
   }
}

Hinweise

Um die genaue Arraygröße zu berechnen, die für GetChars das Speichern der resultierenden Zeichen erforderlich ist, rufen Sie die -Methode auf GetCharCount . Um die maximale Array Größe zu berechnen, müssen Sie die-Methode aufzurufen GetMaxCharCount . Die GetCharCount Methode weist in der Regel weniger Arbeitsspeicher zu, während die GetMaxCharCount Methode im Allgemeinen schneller ausgeführt wird.

Bei der Fehlererkennung bewirkt eine ungültige Sequenz, dass diese Methode ein ArgumentExceptionauslöst. Ohne Fehlererkennung werden ungültige Sequenzen ignoriert, und es wird keine Ausnahme ausgelöst.

Wenn der Bereich der zu decodierenden Bytes die Bytereihenfolgemarkierung (BOM) umfasst und das Bytearray von einer Methode eines nicht BOM-fähigen Typs zurückgegeben wurde, wird das Zeichen U+FFFE in das von dieser Methode zurückgegebene Zeichenarray eingeschlossen. Sie können sie entfernen, indem Sie die String.TrimStart -Methode aufrufen.

Zu konvertierende Daten, z. B. Daten, die aus einem Stream gelesen werden, sind möglicherweise nur in sequenziellen Blöcken verfügbar. In diesem Fall oder wenn die Menge der Daten so umfangreich ist, dass er in kleinere Blöcke aufgeteilt werden muss, verwendet die Anwendung die Decoder oder die Encoder gebotenen der GetDecoder Methode oder die GetEncoder Methode bzw.

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 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.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0