Decoder Klasse

Definition

Konvertiert eine Bytefolge in einen codierten Zeichensatz.

public ref class Decoder abstract
public abstract class Decoder
[System.Serializable]
public abstract class Decoder
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class Decoder
type Decoder = class
[<System.Serializable>]
type Decoder = class
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Decoder = class
Public MustInherit Class Decoder
Vererbung
Decoder
Attribute

Beispiele

Das folgende Beispiel veranschaulicht die Verwendung von , Decoder um zwei verschiedene Bytearrays in ein Zeichenarray zu konvertieren. Eines der Bytes des Zeichens umfasst die Arrays. Dies ähnelt dem, was ein StreamReader -Objekt intern beim Lesen eines Streams tut.

using namespace System;
using namespace System::Text;
int main()
{
   
   // These bytes in UTF-8 correspond to 3 different Unicode
   // characters: space (U+0020), # (U+0023), and the biohazard
   // symbol (U+2623).  Note the biohazard symbol requires 3 bytes
   // in UTF-8 (hexadecimal e2, 98, a3).  Decoders store state across
   // multiple calls to GetChars, handling the case when one char
   // is in multiple byte arrays.
   array<Byte>^bytes1 = {0x20,0x23,0xe2};
   array<Byte>^bytes2 = {0x98,0xa3};
   array<Char>^chars = gcnew array<Char>(3);
   Decoder^ d = Encoding::UTF8->GetDecoder();
   int charLen = d->GetChars( bytes1, 0, bytes1->Length, chars, 0 );
   
   // The value of charLen should be 2 now.
   charLen += d->GetChars( bytes2, 0, bytes2->Length, chars, charLen );
   for ( UInt16 index(0); index < chars->Length; ++index )
   {
      Console::Write( "U+{0:X4}  ", static_cast<UInt16>(chars[ index ]) );

   }
}
using System;
using System.Text;
public class dec
{
    public static void Main()
    {
        // These bytes in UTF-8 correspond to 3 different Unicode
        // characters: space (U+0020), # (U+0023), and the biohazard
        // symbol (U+2623).  Note the biohazard symbol requires 3 bytes
        // in UTF-8 (hexadecimal e2, 98, a3).  Decoders store state across
        // multiple calls to GetChars, handling the case when one char
        // is in multiple byte arrays.
        byte[] bytes1 = { 0x20, 0x23, 0xe2 };
        byte[] bytes2 = { 0x98, 0xa3 };
        char[] chars = new char[3];

        Decoder d = Encoding.UTF8.GetDecoder();
        int charLen = d.GetChars(bytes1, 0, bytes1.Length, chars, 0);
        // The value of charLen should be 2 now.
        charLen += d.GetChars(bytes2, 0, bytes2.Length, chars, charLen);
        foreach(char c in chars)
            Console.Write("U+{0:X4}  ", (ushort)c);
    }
}
Imports System.Text

Public Class dec
    
    Public Shared Sub Main()
        ' These bytes in UTF-8 correspond to 3 different Unicode
        ' characters: space (U+0020), # (U+0023), and the biohazard
        ' symbol (U+2623).  Note the biohazard symbol requires 3 bytes
        ' in UTF-8 (hexadecimal e2, 98, a3).  Decoders store state across
        ' multiple calls to GetChars, handling the case when one char
        ' is in multiple byte arrays.
        Dim bytes1 As Byte() =  {&H20, &H23, &HE2}
        Dim bytes2 As Byte() =  {&H98, &HA3}
        Dim chars(3) As Char
        
        Dim d As Decoder = Encoding.UTF8.GetDecoder()
        Dim charLen As Integer = d.GetChars(bytes1, 0, bytes1.Length, chars, 0)
        ' The value of charLen should be 2 now.
        charLen += d.GetChars(bytes2, 0, bytes2.Length, chars, charLen)
        Dim c As Char
        For Each c In  chars
            Console.Write("U+{0:X4}  ", Convert.ToUInt16(c) )
        Next c
    End Sub
End Class

Hinweise

Um eine Instanz einer Implementierung der Decoder -Klasse abzurufen, sollte die Anwendung die GetDecoder -Methode einer Encoding -Implementierung verwenden.

Die GetCharCount -Methode bestimmt, wie viele Zeichen beim Decodieren einer Bytefolge resultieren, und die- GetChars Methode führt die eigentliche Decodierung aus. Es sind mehrere Versionen dieser beiden Methoden in der Decoder -Klasse verfügbar. Weitere Informationen finden Sie unter Encoding.GetChars. Ein Decoder -Objekt verwaltet Zustandsinformationen zwischen aufeinander folgenden Aufrufen von GetChars - oder Convert -Methoden, sodass bytesequenzen, die sich über Blöcke erstrecken, ordnungsgemäß decodiert werden können. DecoderBehält auch nachfolgende Bytes am Ende der Datenblöcke bei und verwendet die nachfolgenden Bytes im nächsten Decodierungs Vorgang. Daher GetDecoder sind und GetEncoder für Netzwerkübertragungs- und Dateivorgänge nützlich, da diese Vorgänge häufig Datenblöcke anstelle eines vollständigen Datenstroms behandeln.

Hinweis

Wenn die Anwendung mit einem Datenstrom fertig ist, sollte sichergestellt werden, dass die Zustandsinformationen geleert werden, indem der Parameter im entsprechenden Methodenaufruf auf festgelegt flush true wird. Wenn eine Ausnahme auftritt oder die Anwendung Streams wechselt, sollte aufgerufen werden, Reset um den internen Zustand des Objekts zu Decoder löschen.

Überlegungen zur Version

Ein Decoder - oder Encoder -Objekt kann während eines Konvertierungsvorgangs serialisiert werden. Der Zustand des Objekts wird beibehalten, wenn es in derselben Version des .NET Framework deserialisiert wird, aber verloren geht, wenn es in einer anderen Version deserialisiert wird.

Hinweise für Ausführende

Wenn Ihre Anwendung von dieser Klasse erbt, muss sie alle Member überschreiben.

Konstruktoren

Decoder()

Initialisiert eine neue Instanz der Decoder-Klasse.

Eigenschaften

Fallback

Ruft ein DecoderFallback-Objekt für das aktuelle Decoder-Objekt ab oder legt es fest.

FallbackBuffer

Ruft das DecoderFallbackBuffer-Objekt ab, das dem aktuellen Decoder-Objekt zugeordnet ist.

Methoden

Convert(Byte*, Int32, Char*, Int32, Boolean, Int32, Int32, Boolean)

Konvertiert einen Puffer codierter Bytes in UTF-16-codierte Zeichen und speichert das Ergebnis in einem anderen Puffer.

Convert(Byte[], Int32, Int32, Char[], Int32, Int32, Boolean, Int32, Int32, Boolean)

Konvertiert ein Array codierter Bytes in UTF-16-codierte Zeichen und speichert das Ergebnis in einem Zeichenarray.

Convert(ReadOnlySpan<Byte>, Span<Char>, Boolean, Int32, Int32, Boolean)

Konvertiert eine Spanne codierter Bytes in UTF-16-codierte Zeichen und speichert das Ergebnis in einem anderen Spannenpuffer.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetCharCount(Byte*, Int32, Boolean)

Berechnet beim Überschreiben in einer abgeleiteten Klasse die Anzahl der Zeichen, die beim Decodieren einer Bytefolge ab dem angegebenen Bytezeiger erzeugt werden. Ein Parameter gibt an, ob der interne Zustand des Decoders nach der Kalkulation gelöscht werden soll.

GetCharCount(Byte[], Int32, Int32)

Berechnet beim Überschreiben in einer abgeleiteten Klasse die Anzahl der Zeichen, die beim Decodieren einer Bytefolge aus dem angegebenen Bytearray erzeugt werden.

GetCharCount(Byte[], Int32, Int32, Boolean)

Berechnet beim Überschreiben in einer abgeleiteten Klasse die Anzahl der Zeichen, die beim Decodieren einer Bytefolge aus dem angegebenen Bytearray erzeugt werden. Ein Parameter gibt an, ob der interne Zustand des Decoders nach der Kalkulation gelöscht werden soll.

GetCharCount(ReadOnlySpan<Byte>, Boolean)

Berechnet beim Überschreiben in einer abgeleiteten Klasse die Anzahl der Zeichen, die beim Decodieren der Bytefolge in der Spanne erzeugt werden. Ein Parameter gibt an, ob der interne Zustand des Decoders nach der Kalkulation gelöscht werden soll.

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

Beim Überschreiben in einer abgeleiteten Klasse wird eine Bytefolge beginnend am angegebenen Bytezeiger einschließlich aller Bytes im internen Puffer in Zeichen decodiert, die ab Beginn des angegebenen Zeichenzeigers gespeichert werden. Ein Parameter gibt an, ob der interne Zustand des Decoders nach der Konvertierung zu löschen ist.

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

Beim Überschreiben in einer abgeleiteten Klasse wird eine Bytefolge aus dem angegebenen Bytearray einschließlich aller Bytes im internen Puffer in das angegebene Zeichenarray decodiert.

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

Beim Überschreiben in einer abgeleiteten Klasse wird eine Bytefolge aus dem angegebenen Bytearray einschließlich aller Bytes im internen Puffer in das angegebene Zeichenarray decodiert. Ein Parameter gibt an, ob der interne Zustand des Decoders nach der Konvertierung zu löschen ist.

GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean)

Decodiert beim Überschreiben in einer abgeleiteten Klasse eine Folge von Spannenbytes und alle Bytes im internen Puffer in eine Gruppe von Zeichen, die ab dem angegebenen Zeichenzeiger gespeichert werden. Ein Parameter gibt an, ob der interne Zustand des Decoders nach der Konvertierung zu löschen ist.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
Reset()

Beim Überschreiben in einer abgeleiteten Klasse wird der Decoder in den Anfangszustand zurückversetzt.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Erweiterungsmethoden

Convert(Decoder, ReadOnlySequence<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean)

Konvertiert eine ReadOnlySequence<T> in UTF-16-codierte Zeichen und schreibt das Ergebnis in writer.

Convert(Decoder, ReadOnlySpan<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean)

Konvertiert eine ReadOnlySpan<T> mithilfe von decoder in Zeichen und schreibt das Ergebnis in writer.

Gilt für

Siehe auch