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

Nome Description
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 armazenados a partir do ponteiro de caractere especificado. Um parâmetro indica se o estado interno do decodificador deve ser limpo 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 armazenados a partir do ponteiro de caractere especificado. Um parâmetro indica se o estado interno do decodificador deve ser limpo 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 o estado interno do decodificador deve ser limpo 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 armazenados a partir do ponteiro de caractere especificado. Um parâmetro indica se o estado interno do decodificador deve ser limpo 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 ser decodificado.

chars
Span<Char>

Um intervalo para gravar o conjunto resultante de caracteres.

flush
Boolean

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

Retornos

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

Comentários

Lembre-se de que o objeto salva o Decoder estado entre chamadas para GetChars. Quando o aplicativo é feito com um fluxo de dados, ele deve definir o flush parâmetro para true 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 do intervalo que GetChars requer para armazenar os caracteres resultantes, o aplicativo deve usar GetCharCount.

Se GetChars for chamado com flush set to false, o decodificador armazenará 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 um bloco de dados imediatamente antes de chamar GetChars no mesmo bloco, para que todos os bytes à direita do bloco anterior sejam incluídos no cálculo.

Se o aplicativo quiser converter muitos segmentos de um fluxo de entrada, considere usar o Convert método. GetChars gerará uma exceção se o intervalo 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 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.

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 armazenados a partir do ponteiro de caractere especificado. Um parâmetro indica se o estado interno do decodificador deve ser limpo após a conversão.

public:
 virtual int GetChars(System::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)]
public virtual int GetChars(byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[<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
[<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

Parâmetros

bytes
Byte*

Um ponteiro para o primeiro byte a ser decodificado.

byteCount
Int32

O número de bytes a serem decodificados.

chars
Char*

Um ponteiro para o local no qual começar a escrever o conjunto de caracteres resultante.

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

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

Atributos

Exceções

bytes é null (Nothing).

-ou-

chars é null (Nothing).

byteCount ou charCount é menor que zero.

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

Ocorreu um fallback (para obter mais informações, consulte Codificação de caracteres no .NET)

-e-

Fallback é definido como DecoderExceptionFallback.

Comentários

Lembre-se de que o objeto salva o Decoder estado entre chamadas para GetChars. Quando o aplicativo é feito com um fluxo de dados, ele deve definir o flush parâmetro para true 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 do buffer que GetChars requer armazenar os caracteres resultantes, o aplicativo deve usar GetCharCount.

Se GetChars for chamado com flush set to false, o decodificador armazenará 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 um bloco de dados imediatamente antes de chamar GetChars no mesmo bloco, para que todos os bytes à direita do bloco anterior sejam incluídos no cálculo.

Se o aplicativo quiser 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 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 serem decodificados.

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 para conter o conjunto resultante de caracteres.

charIndex
Int32

O índice no qual começar a escrever o conjunto resultante de caracteres.

Retornos

O número real de caracteres gravados em chars.

Exceções

bytes é null (Nothing).

-ou-

chars é null (Nothing).

byteIndex ou byteCount ou charIndex é menor que zero.

-ou-

byteIndex e byteCount não denotar um intervalo válido em bytes.

-ou-

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

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

Ocorreu um fallback (para obter mais informações, consulte 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 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 objeto salva o Decoder estado entre chamadas para GetChars. Quando o aplicativo é feito com um fluxo de dados, ele deve definir o flush parâmetro para true 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 GetChars requer armazenar os caracteres resultantes, o aplicativo deve usar GetCharCount.

Se GetChars for chamado com flush set to false, o decodificador armazenará 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 um bloco de dados imediatamente antes de chamar GetChars no mesmo bloco, para que todos os bytes à direita do bloco anterior sejam incluídos no cálculo.

Se o aplicativo quiser 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 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 o estado interno do decodificador deve ser limpo 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 serem decodificados.

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 para conter o conjunto resultante de caracteres.

charIndex
Int32

O índice no qual começar a escrever o conjunto resultante de caracteres.

flush
Boolean

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

Retornos

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

Exceções

bytes é null (Nothing).

-ou-

chars é null (Nothing).

byteIndex ou byteCount ou charIndex é menor que zero.

-ou-

byteIndex e byteCount não denotar um intervalo válido em bytes.

-ou-

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

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

Ocorreu um fallback (para obter mais informações, consulte Codificação de caracteres no .NET)

-e-

Fallback é definido como DecoderExceptionFallback.

Comentários

Lembre-se de que o objeto salva o Decoder estado entre chamadas para GetChars. Quando o aplicativo é feito com um fluxo de dados, ele deve definir o flush parâmetro para true 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 GetChars requer armazenar os caracteres resultantes, o aplicativo deve usar GetCharCount.

Se GetChars for chamado com flush set to false, o decodificador armazenará 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 um bloco de dados imediatamente antes de chamar GetChars no mesmo bloco, para que todos os bytes à direita do bloco anterior sejam incluídos no cálculo.

Se o aplicativo quiser 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 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