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 funkcji w celu przekonwertowania dwóch różnych tablic Decoder bajtowych na tablicę znaków. Jeden z bajtów znaku obejmuje tablice. Jest to podobne do StreamReader tego, co obiekt robi wewnętrznie podczas odczytywania strumienia.

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

Uwagi

Aby uzyskać wystąpienie implementacji klasy , aplikacja powinna używać Decoder GetDecoder metody Encoding implementacji.

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

Uwaga

Gdy aplikacja jest wykonywana przy użyciu strumienia danych, upewnij się, że informacje o stanie są opróżnione, ustawiając parametr na w flush true odpowiednim wywołaniu metody. Jeśli wystąpi wyjątek lub jeśli aplikacja przełączy strumienie, powinna wywołać wywołanie , aby wyczyścić Reset stan Decoder wewnętrzny obiektu.

Uwagi dotyczące wersji

Obiekt Decoder lub może być Encoder serializowany podczas operacji konwersji. Stan obiektu jest zachowywany, jeśli jest deserializowany w tej samej wersji .NET Framework, ale utracony w przypadku deserializacji w innej wersji.

Uwagi dotyczące implementowania

Gdy aplikacja dziedziczy z tej klasy, musi zastąpić wszystkie składowe.

Konstruktory

Decoder()

Inicjuje nowe wystąpienie klasy Decoder.

Właściwości

Fallback

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

FallbackBuffer

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

Metody

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

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

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

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

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

Konwertuje zakres zakodowanych bajtów na znaki zakodowane w formacie UTF-16 i zapisuje 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, Boolean)

W przypadku przesłonięć w klasie pochodnej oblicza liczbę znaków pochodzących z dekodowania sekwencji bajtów rozpoczynającej się od określonego wskaźnika bajtów. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po obliczeniu.

GetCharCount(Byte[], Int32, Int32)

W przypadku przesłonięć w klasie pochodnej oblicza liczbę znaków pochodzących z dekodowania sekwencji bajtów z określonej tablicy bajtów.

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

W przypadku przesłonięć w klasie pochodnej oblicza liczbę znaków pochodzących z dekodowania sekwencji bajtów z określonej tablicy bajtów. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po obliczeniu.

GetCharCount(ReadOnlySpan<Byte>, Boolean)

W przypadku przesłonięć w klasie pochodnej oblicza liczbę znaków pochodzących z dekodowania sekwencji bajtów w span. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po obliczeniu.

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

W przypadku przesłonięć 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 na zestaw 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(Byte[], Int32, Int32, Char[], Int32)

W przypadku przesłonięć w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów i wszystkich bajtów w buforze wewnętrznym do określonej tablicy znaków.

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

W przypadku przesłonięć w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów i wszystkich bajtów w buforze wewnętrznym do określonej tablicy znaków. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po konwersji.

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

W przypadku przesłonięć w klasie pochodnej dekoduje sekwencję bajtów zakresu i bajtów w buforze wewnętrznym na zestaw 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()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

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

(Odziedziczone po Object)
Reset()

W przypadku przesłonięć w klasie pochodnej program ustawia dekoder z powrotem na swój stan początkowy.

ToString()

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

(Odziedziczone po Object)

Metody rozszerzania

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

Konwertuje znaki zakodowane ReadOnlySequence<T> na UTF-16 i zapisuje wynik na writer.

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

Konwertuje znak ReadOnlySpan<T> na znaki przy użyciu i decoder zapisuje wynik na writer.

Dotyczy

Zobacz też