Decoder Klasa

Definicja

Konwertuje sekwencję zakodowanych bajtów na zestaw znaków.

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
Dziedziczenie
Decoder
Atrybuty

Przykłady

W poniższym przykładzie pokazano użycie klasy Decoder , aby przekonwertować dwie różne tablice bajtów na tablicę znaków. Jeden z bajtów znaku obejmuje tablice. Jest to podobne do tego, co StreamReader obiekt wykonuje wewnętrznie podczas odczytywania strumienia.

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

Uwagi

Aby uzyskać wystąpienie implementacji Decoder klasy, wywołaj GetDecoder metodę Encoding implementacji.

Metoda GetCharCount określa, ile znaków powoduje dekodowanie sekwencji bajtów, a GetChars metoda wykonuje rzeczywiste dekodowanie. W klasie jest dostępnych Decoder kilka wersji obu tych metod. Aby uzyskać więcej informacji, zobacz Encoding.GetChars. Obiekt Decoder przechowuje informacje o stanie między kolejnymi wywołaniami GetChars metod lub Convert , dzięki czemu może poprawnie dekodować sekwencje bajtów, które obejmują bloki. Obiekt Decoder zachowuje również końcowe bajty na końcu bloków danych i używa końcowych bajtów w następnej operacji dekodowania. W związku z tym i GetEncoder są przydatne w przypadku operacji transmisji i plików sieciowych, GetDecoder ponieważ te operacje często zajmują się blokami danych zamiast pełnego strumienia danych.

Note

Po zakończeniu działania aplikacji ze strumieniem danych należy upewnić się, że informacje o stanie są opróżniane przez ustawienie parametru flush na true w odpowiednim wywołaniu metody. W przypadku wystąpienia wyjątku lub przełączenia strumieni przez aplikację należy wywołać Reset metodę w celu wyczyszczenia stanu wewnętrznego Decoder obiektu.

Notatki dotyczące implementowania

Gdy aplikacja dziedziczy z tej klasy, musi zastąpić wszystkie elementy członkowskie.

Konstruktory

Nazwa Opis
Decoder()

Inicjuje nowe wystąpienie klasy Decoder.

Właściwości

Nazwa Opis
Fallback

Pobiera lub ustawia DecoderFallback obiekt dla bieżącego Decoder obiektu.

FallbackBuffer

DecoderFallbackBuffer Pobiera obiekt skojarzony z bieżącym Decoder obiektem.

Metody

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

Konwertuje tablicę zakodowanych bajtów na znaki zakodowane w formacie UTF-16 i przechowuje wynik w tablicy znaków.

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

Konwertuje bufor zakodowanych bajtów na znaki zakodowane w formacie UTF-16 i przechowuje wynik w innym buforze.

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

Konwertuje zakres zakodowanych bajtów na zakodowane znaki UTF-16 i przechowuje wynik w innym buforze zakresu.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetCharCount(Byte[], Int32, Int32, Boolean)

Po zastąpieniu w klasie pochodnej oblicza liczbę znaków generowanych przez dekodowanie sekwencji bajtów z określonej tablicy bajtów. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po obliczeniu.

GetCharCount(Byte[], Int32, Int32)

Po zastąpieniu w klasie pochodnej oblicza liczbę znaków generowanych przez dekodowanie sekwencji bajtów z określonej tablicy bajtów.

GetCharCount(Byte*, Int32, Boolean)

Podczas zastępowania w klasie pochodnej oblicza liczbę znaków generowanych przez dekodowanie sekwencji bajtów rozpoczynających się od określonego wskaźnika bajtów. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po obliczeniu.

GetCharCount(ReadOnlySpan<Byte>, Boolean)

Po zastąpieniu w klasie pochodnej oblicza liczbę znaków generowanych przez dekodowanie sekwencji bajtów w zakresie. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po obliczeniu.

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

Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów i wszelkie bajty w buforze wewnętrznym do określonej tablicy znaków. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po konwersji.

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

Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów i wszelkie bajty w buforze wewnętrznym do określonej tablicy znaków.

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

W przypadku przesłonięcia w klasie pochodnej dekoduje sekwencję bajtów rozpoczynającą się od określonego wskaźnika bajtów i wszystkich bajtów w buforze wewnętrznym do zestawu znaków, które są przechowywane począwszy od określonego wskaźnika znaków. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po konwersji.

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

Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów rozpiętości i wszystkich bajtów w buforze wewnętrznym w zestawie znaków, które są przechowywane począwszy od określonego wskaźnika znaków. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po konwersji.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Object.

(Odziedziczone po Object)
Reset()

Po przesłonięciu w klasie pochodnej ustawia dekoder z powrotem na stan początkowy.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też