Compartilhar via


Decoder Classe

Definição

Converte uma sequência de bytes codificados em um conjunto de caracteres.

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
Herança
Decoder
Atributos

Exemplos

O exemplo a seguir demonstra o uso de um Decoder para converter duas matrizes de bytes diferentes em uma matriz de caracteres. Um dos bytes do caractere abrange as matrizes. Isso é semelhante ao que um StreamReader objeto faz internamente ao ler um fluxo.

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

Comentários

Para obter uma instância de uma implementação da Decoder classe , chame o GetDecoder método de uma implementação Encoding .

O GetCharCount método determina quantos caracteres resultam na decodificação de uma sequência de bytes e o GetChars método executa a decodificação real. Há várias versões de ambos os métodos disponíveis na Decoder classe . Para obter mais informações, consulte Encoding.GetChars. Um Decoder objeto mantém informações de estado entre chamadas sucessivas para métodos ou Convert para GetChars que possa decodificar corretamente sequências de bytes que abrangem blocos. O Decoder também preserva os bytes à direita no final dos blocos de dados e usa os bytes à direita na próxima operação de decodificação. Portanto, GetDecoder e GetEncoder são úteis para operações de transmissão de rede e arquivos porque essas operações geralmente lidam com blocos de dados em vez de um fluxo de dados completo.

Observação

Quando o aplicativo for feito com um fluxo de dados, ele deverá garantir que as informações de estado sejam liberadas definindo o flush parâmetro como true na chamada de método apropriada. Se ocorrer uma exceção ou se o aplicativo alternar fluxos, ele deverá chamar Reset para limpar o estado interno do Decoder objeto.

Notas aos Implementadores

Quando o aplicativo herda dessa classe, ele deve substituir todos os membros.

Construtores

Decoder()

Inicializa uma nova instância da classe Decoder.

Propriedades

Fallback

Obtém ou define um objeto DecoderFallback para o objeto Decoder atual.

FallbackBuffer

Obtém o objeto DecoderFallbackBuffer associado ao objeto Decoder atual.

Métodos

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

Converte um buffer de bytes codificados em caracteres codificados em UTF-16 e armazena o resultado em outro buffer.

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

Converte uma matriz de bytes codificados em caracteres codificados em UTF-16 e armazena o resultado em uma matriz de caracteres.

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

Converte um intervalo de bytes codificados em caracteres codificados em UTF-16 e armazena o resultado em outro buffer de intervalo.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetCharCount(Byte*, Int32, Boolean)

Quando substituído em uma classe derivada, calcula o número de caracteres produzidos usando a decodificação de uma sequência de bytes começando no ponteiro de bytes especificado. Um parâmetro indica se você deseja limpar o estado interno do decodificador após o cálculo.

GetCharCount(Byte[], Int32, Int32)

Quando substituído em uma classe derivada, calcula o número de caracteres produzidos pela decodificação de uma sequência de bytes da matriz de bytes especificada.

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

Quando substituído em uma classe derivada, calcula o número de caracteres produzidos pela decodificação de uma sequência de bytes da matriz de bytes especificada. Um parâmetro indica se você deseja limpar o estado interno do decodificador após o cálculo.

GetCharCount(ReadOnlySpan<Byte>, Boolean)

Quando substituído em uma classe derivada, calcula o número de caracteres produzidos pela decodificação da sequência de bytes no intervalo. Um parâmetro indica se você deseja limpar o estado interno do decodificador após o cálculo.

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

Quando substituído em uma classe derivada, decodifica uma sequência de bytes começando no ponteiro de bytes especificado e quaisquer bytes no buffer interno em um conjunto de caracteres que são armazenados iniciando o ponteiro de caractere especificado. Um parâmetro indica se você deseja limpar o estado interno do decodificador após a conversão.

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

Quando substituído em uma classe derivada, decodifica uma sequência de bytes da matriz de bytes especificada e quaisquer bytes no buffer interno na matriz de caracteres especificada.

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

Quando substituído em uma classe derivada, decodifica uma sequência de bytes da matriz de bytes especificada e quaisquer bytes no buffer interno na matriz de caracteres especificada. Um parâmetro indica se você deseja limpar o estado interno do decodificador após a conversão.

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

Quando substituído em uma classe derivada, decodifica uma sequência de bytes de intervalo e quaisquer bytes no buffer interno em um conjunto de caracteres que são armazenados, iniciando no ponteiro de caractere especificado. Um parâmetro indica se você deseja limpar o estado interno do decodificador após a conversão.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
Reset()

Quando substituído em uma classe derivada, define o decodificador de volta ao estado inicial.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Métodos de Extensão

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

Converte um ReadOnlySequence<T> para caracteres codificados em UTF-16 e grava o resultado em writer.

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

Converte um ReadOnlySpan<T> em caracteres usando decoder e grava o resultado em writer.

Aplica-se a

Confira também