Sdílet prostřednictvím


Decoder Třída

Definice

Převede posloupnost zakódovaných bajtů na sadu znaků.

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
Dědičnost
Decoder
Atributy

Příklady

Následující příklad ukazuje použití k převodu Decoder dvou různých bajtů pole na pole znaků. Jeden z bajtů znaku překlenuje pole. Je to podobné tomu, co StreamReader objekt dělá interně při čtení streamu.

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

Poznámky

Chcete-li získat instanci implementace Decoder třídy, zavolejte GetDecoder metodu Encoding implementace.

Metoda GetCharCount určuje, kolik znaků má za následek dekódování posloupnosti bajtů, a GetChars metoda provede skutečné dekódování. Ve třídě je k dispozici Decoder několik verzí obou těchto metod. Další informace naleznete v tématu Encoding.GetChars. Objekt Decoder udržuje informace o stavu mezi po sobě jdoucími GetChars voláními nebo Convert metodami, aby mohl správně dekódovat sekvence bajtů, které pokrývají bloky. Zachová Decoder také koncové bajty na konci datových bloků a použije koncové bajty v další operaci dekódování. Proto a GetEncoder jsou užitečné pro síťové přenosy a operace se soubory, GetDecoder protože tyto operace často pracují s bloky dat místo s úplným datovým proudem.

Poznámka

Když je aplikace hotová s datovým proudem, měla by zajistit, aby informace o stavu byly vyprázdněny nastavením parametru flush na true v příslušném volání metody. Pokud dojde k výjimce nebo aplikace přepne streamy, měla by volat Reset , aby se vymazal vnitřní stav objektu Decoder .

Poznámky pro implementátory

Když vaše aplikace dědí z této třídy, musí přepsat všechny členy.

Konstruktory

Decoder()

Inicializuje novou instanci Decoder třídy.

Vlastnosti

Fallback

Získá nebo nastaví DecoderFallback objekt pro aktuální Decoder objekt.

FallbackBuffer

DecoderFallbackBuffer Získá objekt přidružený k aktuálnímu Decoder objektu.

Metody

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

Převede vyrovnávací paměť kódovaných bajtů na znaky kódování UTF-16 a uloží výsledek do jiné vyrovnávací paměti.

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

Převede pole zakódovaných bajtů na znaky s kódováním UTF-16 a uloží výsledek do pole znaků.

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

Převede rozsah zakódovaných bajtů na znaky s kódováním UTF-16 a uloží výsledek do jiné vyrovnávací paměti span.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetCharCount(Byte*, Int32, Boolean)

Při přepsání v odvozené třídě vypočítá počet znaků vytvořených dekódováním posloupnosti bajtů počínaje zadaným bajtovým ukazatelem. Parametr určuje, zda se má po výpočtu vymazat vnitřní stav dekodéru.

GetCharCount(Byte[], Int32, Int32)

Při přepsání v odvozené třídě vypočítá počet znaků vytvořených dekódováním posloupnosti bajtů ze zadaného pole bajtů.

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

Při přepsání v odvozené třídě vypočítá počet znaků vytvořených dekódováním posloupnosti bajtů ze zadaného pole bajtů. Parametr určuje, zda se má po výpočtu vymazat vnitřní stav dekodéru.

GetCharCount(ReadOnlySpan<Byte>, Boolean)

Při přepsání v odvozené třídě vypočítá počet znaků vytvořených dekódováním posloupnosti bajtů v rozsahu. Parametr určuje, zda se má po výpočtu vymazat vnitřní stav dekodéru.

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

Při přepsání v odvozené třídě dekóduje posloupnost bajtů začínající na zadaném bajtovém ukazateli a všechny bajty v interní vyrovnávací paměti do sady znaků, které jsou uloženy od zadaného ukazatele znaků. Parametr určuje, zda se má po převodu vymazat vnitřní stav dekodéru.

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

Při přepsání v odvozené třídě dekóduje posloupnost bajtů ze zadaného pole bajtů a všech bajtů v interní vyrovnávací paměti do zadané pole znaků.

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

Při přepsání v odvozené třídě dekóduje posloupnost bajtů ze zadaného pole bajtů a všech bajtů v interní vyrovnávací paměti do zadané pole znaků. Parametr určuje, zda se má po převodu vymazat vnitřní stav dekodéru.

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

Při přepsání v odvozené třídě dekóduje posloupnost bajtů span a všech bajtů v interní vyrovnávací paměti do sady znaků, které jsou uloženy od zadaného ukazatele znaku. Parametr určuje, zda se má po převodu vymazat vnitřní stav dekodéru.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
Reset()

Při přepsání v odvozené třídě nastaví dekodér zpět do počátečního stavu.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Metody rozšíření

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

Převede znaky s kódováním ReadOnlySequence<T> UTF-16 a zapíše výsledek do writer.

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

Převede znak na ReadOnlySpan<T> znaky pomocí decoder a zapíše výsledek do writer.

Platí pro

Viz také