Decoder.GetChars Método

Definição

Quando substituído em uma classe derivada, decodifica uma sequência de bytes em um conjunto de caracteres.

Sobrecargas

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.

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.

public:
 virtual int GetChars(ReadOnlySpan<System::Byte> bytes, Span<char> chars, bool flush);
public virtual int GetChars (ReadOnlySpan<byte> bytes, Span<char> chars, bool flush);
abstract member GetChars : ReadOnlySpan<byte> * Span<char> * bool -> int
override this.GetChars : ReadOnlySpan<byte> * Span<char> * bool -> int
Public Overridable Function GetChars (bytes As ReadOnlySpan(Of Byte), chars As Span(Of Char), flush As Boolean) As Integer

Parâmetros

bytes
ReadOnlySpan<Byte>

Um intervalo de bytes a decodificar.

chars
Span<Char>

Um intervalo para gravar o conjunto de caracteres resultante.

flush
Boolean

true para limpar o estado interno do decodificador após a conversão; caso contrário, false.

Retornos

Int32

O número real de caracteres gravados no intervalo indicado pelo parâmetro chars.

Comentários

Lembre-se de Decoder que o objeto salva o estado entre chamadas para GetChars . Quando o aplicativo é feito com um fluxo de dados, ele deve definir o parâmetro como para garantir que as informações flush true de estado são liberados. Com essa configuração, o decodificador ignora bytes inválidos no final do bloco de dados e limpa o buffer interno.

Para calcular o tamanho exato do intervalo GetChars necessário para armazenar os caracteres resultantes, o aplicativo deve usar GetCharCount .

Se for chamado com definido como , o decodificador armazenará bytes à frente no final do bloco de dados em um buffer interno e os usará na próxima operação GetChars flush de false decodificação. O aplicativo deve chamar em um bloco de dados imediatamente antes de chamar no mesmo bloco, para que todos os bytes à frente do bloco anterior sejam GetCharCount GetChars incluídos no cálculo.

Se o aplicativo for converter muitos segmentos de um fluxo de entrada, considere usar o Convert método . GetChars lançará uma exceção se o intervalo de saída não for grande o suficiente, mas preencherá o máximo de espaço possível e retornará os bytes lidos e caracteres gravados, desde que a matriz de saída permita pelo menos dois Convert caracteres. Consulte também o Encoding.GetChars tópico para obter mais comentários.

Aplica-se a

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

Importante

Esta API não está em conformidade com CLS.

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.

public:
 virtual int GetChars(System::Byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[System.CLSCompliant(false)]
public virtual int GetChars (byte* bytes, int byteCount, char* chars, int charCount, bool flush);
public virtual int GetChars (byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetChars (byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public virtual int GetChars (byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[<System.CLSCompliant(false)>]
abstract member GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
abstract member GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
[<System.Security.SecurityCritical>]
abstract member GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int

Parâmetros

bytes
Byte*

Um ponteiro do primeiro byte a ser decodificado.

byteCount
Int32

O número de bytes a serem decodificados.

chars
Char*

Um ponteiro para o local no qual a gravação do conjunto de caracteres resultante deve ser iniciada.

charCount
Int32

O número máximo de caracteres a serem gravados.

flush
Boolean

true para limpar o estado interno do decodificador após a conversão; caso contrário, false.

Retornos

Int32

O número real de caracteres gravados no local indicado pelo parâmetro chars.

Atributos

Exceções

bytes é null (Nothing).

  • ou -

chars é null (Nothing).

byteCount ou charCount é menor que zero.

charCount é menor que o número de caracteres resultante.

Ocorreu um fallback (saiba mais em Codificação de caracteres no .NET)

-e-

Fallback é definido como DecoderExceptionFallback.

Comentários

Lembre-se de Decoder que o objeto salva o estado entre chamadas para GetChars . Quando o aplicativo é feito com um fluxo de dados, ele deve definir o parâmetro como para garantir que as informações flush true de estado são liberados. Com essa configuração, o decodificador ignora bytes inválidos no final do bloco de dados e limpa o buffer interno.

Para calcular o tamanho exato do buffer GetChars que requer para armazenar os caracteres resultantes, o aplicativo deve usar GetCharCount .

Se for chamado com definido como , o decodificador armazenará bytes à frente no final do bloco de dados em um buffer interno e os usará na próxima operação GetChars flush de false decodificação. O aplicativo deve chamar GetCharCount em um bloco de dados imediatamente antes de chamar GetChars no mesmo bloco, para que quaisquer bytes à direita do bloco anterior sejam incluídos no cálculo.

Se seu aplicativo for converter muitos segmentos de um fluxo de entrada, considere usar o Convert método. GetChars gerará uma exceção se o buffer de saída não for grande o suficiente, mas Convert preencherá o máximo de espaço possível e retornará os bytes lidos e os caracteres gravados, desde que a matriz de saída permita pelo menos dois caracteres. Consulte também o Encoding.GetChars tópico para obter mais comentários.

Confira também

Aplica-se a

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.

public:
 abstract int GetChars(cli::array <System::Byte> ^ bytes, int byteIndex, int byteCount, cli::array <char> ^ chars, int charIndex);
public abstract int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex);
abstract member GetChars : byte[] * int * int * char[] * int -> int
Public MustOverride Function GetChars (bytes As Byte(), byteIndex As Integer, byteCount As Integer, chars As Char(), charIndex As Integer) As Integer

Parâmetros

bytes
Byte[]

A matriz de bytes que contém a sequência de bytes a ser decodificada.

byteIndex
Int32

O índice do primeiro byte a ser decodificado.

byteCount
Int32

O número de bytes a serem decodificados.

chars
Char[]

A matriz de caracteres que deve conter o conjunto de caracteres resultante.

charIndex
Int32

O índice no qual será iniciada a gravação do conjunto de caracteres resultante.

Retornos

Int32

O número real de caracteres gravados em chars.

Exceções

bytes é null (Nothing).

  • ou -

chars é null (Nothing).

byteIndex, byteCount ou charIndex é menor que zero.

  • ou -

byteindex e byteCount não denotam um intervalo válido em bytes.

  • ou -

charIndex não é um índice válido em chars.

chars não tem capacidade suficiente do charIndex até o final da matriz para acomodar os caracteres resultantes.

Ocorreu um fallback (saiba mais em Codificação de caracteres no .NET)

-e-

Fallback é definido como DecoderExceptionFallback.

Exemplos

O exemplo a seguir demonstra como decodificar um intervalo de elementos de uma matriz de bytes e armazená-los em uma matriz de caracteres Unicode. O GetCharCount método é usado para calcular o número de caracteres necessários para armazenar os elementos decodificados na matriz bytes . O GetChars método decodifica os elementos especificados na matriz de bytes e os armazena na nova matriz de caracteres.

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Char>^chars;
   array<Byte>^bytes = {85,0,110,0,105,0,99,0,111,0,100,0,101,0};
   Decoder^ uniDecoder = Encoding::Unicode->GetDecoder();
   int charCount = uniDecoder->GetCharCount( bytes, 0, bytes->Length );
   chars = gcnew array<Char>(charCount);
   int charsDecodedCount = uniDecoder->GetChars( bytes, 0, bytes->Length, chars, 0 );
   Console::WriteLine( "{0} characters used to decode bytes.", charsDecodedCount );
   Console::Write( "Decoded chars: " );
   IEnumerator^ myEnum = chars->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Char c = safe_cast<Char>(myEnum->Current);
      Console::Write( "[{0}]", c.ToString() );
   }

   Console::WriteLine();
}

/* This code example produces the following output.

7 characters used to decode bytes.
Decoded chars: [U][n][i][c][o][d][e]

*/
using System;
using System.Text;

class UnicodeEncodingExample {
    public static void Main() {
        Char[] chars;
        Byte[] bytes = new Byte[] {
            85, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0
        };

        Decoder uniDecoder = Encoding.Unicode.GetDecoder();

        int charCount = uniDecoder.GetCharCount(bytes, 0, bytes.Length);
        chars = new Char[charCount];
        int charsDecodedCount = uniDecoder.GetChars(bytes, 0, bytes.Length, chars, 0);

        Console.WriteLine(
            "{0} characters used to decode bytes.", charsDecodedCount
        );

        Console.Write("Decoded chars: ");
        foreach (Char c in chars) {
            Console.Write("[{0}]", c);
        }
        Console.WriteLine();
    }
}

/* This code example produces the following output.

7 characters used to decode bytes.
Decoded chars: [U][n][i][c][o][d][e]

*/
Imports System.Text

Class UnicodeEncodingExample
    
    Public Shared Sub Main()
        Dim chars() As Char
        Dim bytes() As Byte = { _
            85, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0 _
        }
        
        Dim uniDecoder As Decoder = Encoding.Unicode.GetDecoder()
        
        Dim charCount As Integer = uniDecoder.GetCharCount(bytes, 0, bytes.Length)
        chars = New Char(charCount - 1) {}
        Dim charsDecodedCount As Integer = _
            uniDecoder.GetChars(bytes, 0, bytes.Length, chars, 0)
        
        Console.WriteLine( _
            "{0} characters used to decode bytes.", _
            charsDecodedCount _
        )
        
        Console.Write("Decoded chars: ")
        Dim c As Char
        For Each c In  chars
            Console.Write("[{0}]", c)
        Next c
        Console.WriteLine()
    End Sub
End Class

'This code example produces the following output.
'
'7 characters used to decode bytes.
'Decoded chars: [U][n][i][c][o][d][e]
'

Comentários

Lembre-se de que o Decoder objeto salva o estado entre as chamadas para GetChars . Quando o aplicativo é concluído com um fluxo de dados, ele deve definir o flush parâmetro como true para garantir que as informações de estado sejam liberadas. Com essa configuração, o decodificador ignora bytes inválidos no final do bloco de dados e limpa o buffer interno.

Para calcular o tamanho exato da matriz que o GetChars exige para armazenar os caracteres resultantes, o aplicativo deve usar GetCharCount .

Se GetChars for chamado com flush definido como false , o decodificador armazenará os bytes à direita no final do bloco de dados em um buffer interno e os usará na próxima operação de decodificação. O aplicativo deve chamar GetCharCount em um bloco de dados imediatamente antes de chamar GetChars no mesmo bloco, para que quaisquer bytes à direita do bloco anterior sejam incluídos no cálculo.

Se seu aplicativo for converter muitos segmentos de um fluxo de entrada, considere usar o Convert método. GetChars gerará uma exceção se o buffer de saída não for grande o suficiente, mas Convert preencherá o máximo de espaço possível e retornará os bytes lidos e os caracteres gravados, desde que a matriz de saída permita pelo menos dois caracteres. Consulte também o Encoding.GetChars tópico para obter mais comentários.

Confira também

Aplica-se a

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.

public:
 virtual int GetChars(cli::array <System::Byte> ^ bytes, int byteIndex, int byteCount, cli::array <char> ^ chars, int charIndex, bool flush);
public virtual int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex, bool flush);
abstract member GetChars : byte[] * int * int * char[] * int * bool -> int
override this.GetChars : byte[] * int * int * char[] * int * bool -> int
Public Overridable Function GetChars (bytes As Byte(), byteIndex As Integer, byteCount As Integer, chars As Char(), charIndex As Integer, flush As Boolean) As Integer

Parâmetros

bytes
Byte[]

A matriz de bytes que contém a sequência de bytes a ser decodificada.

byteIndex
Int32

O índice do primeiro byte a ser decodificado.

byteCount
Int32

O número de bytes a serem decodificados.

chars
Char[]

A matriz de caracteres que deve conter o conjunto de caracteres resultante.

charIndex
Int32

O índice no qual será iniciada a gravação do conjunto de caracteres resultante.

flush
Boolean

true para limpar o estado interno do decodificador após a conversão; caso contrário, false.

Retornos

Int32

O número real de caracteres gravados no parâmetro chars.

Exceções

bytes é null (Nothing).

  • ou -

chars é null (Nothing).

byteIndex, byteCount ou charIndex é menor que zero.

  • ou -

byteindex e byteCount não denotam um intervalo válido em bytes.

  • ou -

charIndex não é um índice válido em chars.

chars não tem capacidade suficiente do charIndex até o final da matriz para acomodar os caracteres resultantes.

Ocorreu um fallback (saiba mais em Codificação de caracteres no .NET)

-e-

Fallback é definido como DecoderExceptionFallback.

Comentários

Lembre-se de que o Decoder objeto salva o estado entre as chamadas para GetChars . Quando o aplicativo é concluído com um fluxo de dados, ele deve definir o flush parâmetro como true para garantir que as informações de estado sejam liberadas. Com essa configuração, o decodificador ignora bytes inválidos no final do bloco de dados e limpa o buffer interno.

Para calcular o tamanho exato da matriz que o GetChars exige para armazenar os caracteres resultantes, o aplicativo deve usar GetCharCount .

Se GetChars for chamado com flush definido como false , o decodificador armazenará os bytes à direita no final do bloco de dados em um buffer interno e os usará na próxima operação de decodificação. O aplicativo deve chamar GetCharCount em um bloco de dados imediatamente antes de chamar GetChars no mesmo bloco, para que quaisquer bytes à direita do bloco anterior sejam incluídos no cálculo.

Se seu aplicativo for converter muitos segmentos de um fluxo de entrada, considere usar o Convert método. GetChars gerará uma exceção se o buffer de saída não for grande o suficiente, mas Convert preencherá o máximo de espaço possível e retornará os bytes lidos e os caracteres gravados, desde que a matriz de saída permita pelo menos dois caracteres. Consulte também o Encoding.GetChars tópico para obter mais comentários.

Confira também

Aplica-se a