Decoder.GetChars Método
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.
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.
- 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
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
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
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.