Freigeben über


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

Im folgenden Beispiel wird die Verwendung von veranschaulicht 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 ausführt.

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 instance einer Implementierung der Decoder -Klasse abzurufen, rufen Sie die GetDecoder -Methode einer Encoding -Implementierung auf.

Die GetCharCount -Methode bestimmt, wie viele Zeichen beim Decodieren einer Bytefolge resultieren, und die- GetChars Methode führt die eigentliche Decodierung aus. Es gibt mehrere Versionen dieser beiden Methoden in der Decoder -Klasse. Weitere Informationen finden Sie unter Encoding.GetChars. Ein Decoder -Objekt verwaltet Zustandsinformationen zwischen aufeinander folgenden Aufrufen von GetChars - oder Convert -Methoden, damit bytefolgen, 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 sind und GetEncoder für Netzwerkübertragungs- und Dateivorgänge nützlich, GetDecoder da sich diese Vorgänge häufig mit Datenblöcken und nicht mit einem vollständigen Datenstrom befassen.

Hinweis

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

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:

Weitere Informationen