Decoder Classe

Definição

{1>Converte uma sequência de bytes codificados em um conjunto de caracteres.<1}Converts a sequence of encoded bytes into a set of characters.

public ref class Decoder abstract
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public abstract class Decoder
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.The following example demonstrates the use of a Decoder to convert two different byte arrays into a character array. Um dos bytes do caractere abrange as matrizes.One of the character's bytes spans the arrays. Isso é semelhante ao que um objeto StreamReader faz internamente ao ler um fluxo.This is similar to what a StreamReader object does internally when reading a stream.

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 classe Decoder, o aplicativo deve usar o método GetDecoder de uma implementação de Encoding.To obtain an instance of an implementation of the Decoder class, the application should use the GetDecoder method of an Encoding implementation.

O método GetCharCount determina quantos caracteres resultam na decodificação de uma sequência de bytes e o método GetChars executa a decodificação real.The GetCharCount method determines how many characters result in decoding a sequence of bytes, and the GetChars method performs the actual decoding. Há várias versões de ambos os métodos disponíveis na classe Decoder.There are several versions of both of these methods available in the Decoder class. Para obter mais informações, consulte Encoding.GetChars.For more information, see Encoding.GetChars. Um objeto Decoder mantém informações de estado entre chamadas sucessivas para GetChars ou Convert métodos para que possa decodificar corretamente Sequências de bytes que abranjam blocos.A Decoder object maintains state information between successive calls to GetChars or Convert methods so it can correctly decode byte sequences that span blocks. 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.The Decoder also preserves trailing bytes at the end of data blocks and uses the trailing bytes in the next decoding operation. Portanto, GetDecoder e GetEncoder são úteis para a transmissão de rede e operações de arquivo porque essas operações geralmente lidam com blocos de dados em vez de um fluxo de dados completo.Therefore, GetDecoder and GetEncoder are useful for network transmission and file operations because those operations often deal with blocks of data instead of a complete data stream.

Observação

Quando o aplicativo é concluído com um fluxo de dados, ele deve garantir que as informações de estado sejam liberadas definindo o parâmetro flush como true na chamada de método apropriada.When the application is done with a stream of data, it should make sure that the state information is flushed by setting the flush parameter to true in the appropriate method call. Se ocorrer uma exceção ou se o aplicativo alternar fluxos, ele deverá chamar Reset para limpar o estado interno do objeto Decoder.If an exception occurs or if the application switches streams, it should call Reset to clear the internal state of the Decoder object.

Considerações da versãoVersion Considerations

Um objeto Decoder ou Encoder pode ser serializado durante uma operação de conversão.A Decoder or Encoder object can be serialized during a conversion operation. O estado do objeto será retido se for desserializado na mesma versão do .NET Framework, mas perdido se for desserializado em outra versão.The state of the object is retained if it is deserialized in the same version of the .NET Framework, but lost if it is deserialized in another version.

Notas aos Implementadores

Quando seu aplicativo herda dessa classe, ele deve substituir todos os membros.When your application inherits from this class, it must override all the members.

Construtores

Decoder()

Inicializa uma nova instância da classe Decoder.Initializes a new instance of the Decoder class.

Propriedades

Fallback

Obtém ou define um objeto DecoderFallback para o objeto Decoder atual.Gets or sets a DecoderFallback object for the current Decoder object.

FallbackBuffer

Obtém o objeto DecoderFallbackBuffer associado ao objeto Decoder atual.Gets the DecoderFallbackBuffer object associated with the current Decoder object.

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.Converts a buffer of encoded bytes to UTF-16 encoded characters and stores the result in another 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.Converts an array of encoded bytes to UTF-16 encoded characters and stores the result in a character array.

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.Converts a span of encoded bytes to UTF-16 encoded characters and stores the result in another span buffer.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

(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.When overridden in a derived class, calculates the number of characters produced by decoding a sequence of bytes starting at the specified byte pointer. Um parâmetro indica se você deseja limpar o estado interno do decodificador após o cálculo.A parameter indicates whether to clear the internal state of the decoder after the calculation.

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.When overridden in a derived class, calculates the number of characters produced by decoding a sequence of bytes from the specified byte array.

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.When overridden in a derived class, calculates the number of characters produced by decoding a sequence of bytes from the specified byte array. Um parâmetro indica se você deseja limpar o estado interno do decodificador após o cálculo.A parameter indicates whether to clear the internal state of the decoder after the calculation.

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.When overridden in a derived class, calculates the number of characters produced by decoding the sequence of bytes in the span. Um parâmetro indica se você deseja limpar o estado interno do decodificador após o cálculo.A parameter indicates whether to clear the internal state of the decoder after the calculation.

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.When overridden in a derived class, decodes a sequence of bytes starting at the specified byte pointer and any bytes in the internal buffer into a set of characters that are stored starting at the specified character pointer. Um parâmetro indica se você deseja limpar o estado interno do decodificador após a conversão.A parameter indicates whether to clear the internal state of the decoder after the conversion.

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.When overridden in a derived class, decodes a sequence of bytes from the specified byte array and any bytes in the internal buffer into the specified character array.

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.When overridden in a derived class, decodes a sequence of bytes from the specified byte array and any bytes in the internal buffer into the specified character array. Um parâmetro indica se você deseja limpar o estado interno do decodificador após a conversão.A parameter indicates whether to clear the internal state of the decoder after the conversion.

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.When overridden in a derived class, decodes a sequence of span bytes and any bytes in the internal buffer into a set of characters that are stored starting at the specified character pointer. Um parâmetro indica se você deseja limpar o estado interno do decodificador após a conversão.A parameter indicates whether to clear the internal state of the decoder after the conversion.

GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
Reset()

Quando substituído em uma classe derivada, define o decodificador de volta ao estado inicial.When overridden in a derived class, sets the decoder back to its initial state.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)

Aplica-se a

Veja também