Decoder Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |
Convert(Decoder, ReadOnlySpan<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean) |
Converte um ReadOnlySpan<T> em caracteres usando |