Decoder.GetChars Decoder.GetChars Decoder.GetChars Decoder.GetChars Method

Definición

Cuando se reemplaza en una clase derivada, descodifica una secuencia de bytes en un juego de caracteres.When overridden in a derived class, decodes a sequence of bytes into a set of characters.

Sobrecargas

GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean) GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean) GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean) GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean)
GetChars(Byte*, Int32, Char*, Int32, Boolean) GetChars(Byte*, Int32, Char*, Int32, Boolean) GetChars(Byte*, Int32, Char*, Int32, Boolean)

Cuando se reemplaza en una clase derivada, descodifica una secuencia de bytes a partir del puntero de byte especificado y cualquier byte del búfer interno en un juego de caracteres que se almacena a partir del puntero de caracteres 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. Un parámetro indica si el estado interno del descodificador se borra después de la conversión.A parameter indicates whether to clear the internal state of the decoder after the conversion.

GetChars(Byte[], Int32, Int32, Char[], Int32) GetChars(Byte[], Int32, Int32, Char[], Int32) GetChars(Byte[], Int32, Int32, Char[], Int32) GetChars(Byte[], Int32, Int32, Char[], Int32)

Cuando se reemplaza en una clase derivada, descodifica una secuencia de bytes de la matriz de bytes especificada y cualquier byte del búfer interno en la 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) GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean)

Cuando se reemplaza en una clase derivada, descodifica una secuencia de bytes de la matriz de bytes especificada y cualquier byte del búfer interno en la 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. Un parámetro indica si el estado interno del descodificador se borra después de la conversión.A parameter indicates whether to clear the internal state of the decoder after the conversion.

GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean) GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean) GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean) GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean)

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

chars
Span<Char>

Devoluciones

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

Importante

Esta API no es conforme a CLS.

Cuando se reemplaza en una clase derivada, descodifica una secuencia de bytes a partir del puntero de byte especificado y cualquier byte del búfer interno en un juego de caracteres que se almacena a partir del puntero de caracteres 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. Un parámetro indica si el estado interno del descodificador se borra después de la conversión.A parameter indicates whether to clear the internal state of the decoder after the conversion.

public:
 virtual int GetChars(System::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);
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*

Puntero al primer byte que se va a descodificar.A pointer to the first byte to decode.

byteCount
Int32 Int32 Int32 Int32

Número de bytes que se van a descodificar.The number of bytes to decode.

chars
Char*

Puntero a la ubicación en la que se iniciará la escritura del juego de caracteres resultante.A pointer to the location at which to start writing the resulting set of characters.

charCount
Int32 Int32 Int32 Int32

Número máximo de caracteres que se van a escribir.The maximum number of characters to write.

flush
Boolean Boolean Boolean Boolean

Es true para borrar el estado interno del descodificador después de la conversión; de lo contrario, es false.true to clear the internal state of the decoder after the conversion; otherwise, false.

Devoluciones

Número real de caracteres escritos en la ubicación indicada por el parámetro chars.The actual number of characters written at the location indicated by the chars parameter.

Excepciones

bytes es null (Nothing).bytes is null (Nothing).

O bien-or- chars es null (Nothing).chars is null (Nothing).

byteCount o charCount es menor que cero.byteCount or charCount is less than zero.

El valor de charCount es menor que el número de caracteres resultante.charCount is less than the resulting number of characters.

Se ha producido una acción de reserva (vea Codificación de caracteres en .NET Framework para obtener una explicación completa)A fallback occurred (see Character Encoding in the .NET Framework for fuller explanation) - y --and- El valor de Fallback está establecido en DecoderExceptionFallback.Fallback is set to DecoderExceptionFallback.

Comentarios

Recuerde que el Decoder objeto guarda el estado entre las llamadas a GetChars.Remember that the Decoder object saves state between calls to GetChars. Cuando la aplicación se realiza con un flujo de datos, se debe establecer el flush parámetro true para asegurarse de que se vacíe la información de estado.When the application is done with a stream of data, it should set the flush parameter to true to make sure that the state information is flushed. Con esta configuración, el descodificador pasa por alto los bytes no válidos al final del bloque de datos y borra el búfer interno.With this setting, the decoder ignores invalid bytes at the end of the data block and clears the internal buffer.

Para calcular el tamaño del búfer exacto que GetChars requiere para almacenar los caracteres resultantes, debe usar la aplicación GetCharCount.To calculate the exact buffer size that GetChars requires to store the resulting characters, the application should use GetCharCount.

Si GetChars se llama con flush establecido en false, el descodificador almacena los bytes finales al final del bloque de datos en un búfer interno y se utilizan en la siguiente operación de descodificación.If GetChars is called with flush set to false, the decoder stores trailing bytes at the end of the data block in an internal buffer and uses them in the next decoding operation. La aplicación debe llamar a GetCharCount en un bloque de datos inmediatamente antes de llamar a GetChars en el mismo bloque, para que todos los bytes finales del bloque anterior se incluyen en el cálculo.The application should call GetCharCount on a block of data immediately before calling GetChars on the same block, so that any trailing bytes from the previous block are included in the calculation.

Si la aplicación consiste en convertir muchos segmentos de un flujo de entrada, considere el uso de la Convert método.If your application is to convert many segments of an input stream, consider using the Convert method. GetChars se iniciará una excepción si el búfer de salida no es suficientemente grande, pero Convert se rellenará tanto espacio como sea posible y devolverá los bytes leídos y caracteres escritos.GetChars will throw an exception if the output buffer isn't large enough, but Convert will fill as much space as possible and return the bytes read and chars written. Consulte también el Encoding.GetChars tema para obtener más comentarios.Also see the Encoding.GetChars topic for more comments.

Seguridad

SecurityCriticalAttribute
requiere plena confianza para el llamador inmediato.Requires full trust for the immediate caller. Este miembro no se puede usar código de confianza parcial o transparente.This member cannot be used by partially trusted or transparent code.

Consulte también:

GetChars(Byte[], Int32, Int32, Char[], Int32) GetChars(Byte[], Int32, Int32, Char[], Int32) GetChars(Byte[], Int32, Int32, Char[], Int32) GetChars(Byte[], Int32, Int32, Char[], Int32)

Cuando se reemplaza en una clase derivada, descodifica una secuencia de bytes de la matriz de bytes especificada y cualquier byte del búfer interno en la 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.

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[]

Matriz de bytes que contiene la secuencia de bytes que se va a descodificar.The byte array containing the sequence of bytes to decode.

byteIndex
Int32 Int32 Int32 Int32

Índice del primer byte que se va a descodificar.The index of the first byte to decode.

byteCount
Int32 Int32 Int32 Int32

Número de bytes que se van a descodificar.The number of bytes to decode.

chars
Char[]

Matriz de caracteres que contendrá el juego de caracteres resultante.The character array to contain the resulting set of characters.

charIndex
Int32 Int32 Int32 Int32

Índice en el que se inicia la escritura del juego de caracteres resultante.The index at which to start writing the resulting set of characters.

Devoluciones

Número real de caracteres escritos en chars.The actual number of characters written into chars.

Excepciones

bytes es null (Nothing).bytes is null (Nothing).

O bien-or- chars es null (Nothing).chars is null (Nothing).

El valor de byteIndex, byteCount o charIndex es menor que cero.byteIndex or byteCount or charIndex is less than zero.

O bien-or- byteindex y byteCount no denotan un intervalo válido en bytes.byteindex and byteCount do not denote a valid range in bytes.

O bien-or- charIndex no es un índice válido para chars.charIndex is not a valid index in chars.

chars no tiene suficiente capacidad desde charIndex hasta el final de la matriz para aloja los caracteres resultantes.chars does not have enough capacity from charIndex to the end of the array to accommodate the resulting characters.

Se ha producido una acción de reserva (vea Codificación de caracteres en .NET Framework para obtener una explicación completa)A fallback occurred (see Character Encoding in the .NET Framework for fuller explanation) - y --and- El valor de Fallback está establecido en DecoderExceptionFallback.Fallback is set to DecoderExceptionFallback.

Ejemplos

El ejemplo siguiente muestra cómo descodificar un intervalo de elementos de una matriz de bytes y almacenarlas en una matriz de caracteres Unicode.The following example demonstrates how to decode a range of elements from a byte array and store them in a Unicode character array. El GetCharCount método se usa para calcular el número de caracteres necesarios para almacenar los elementos descodificados en la matriz bytes.The GetCharCount method is used to calculate the number of characters needed to store the decoded elements in the array bytes. El GetChars método descodifica los elementos especificados en la matriz de bytes y los almacena en la nueva matriz de caracteres.The GetChars method decodes the specified elements in the byte array and stores them in the new character array.

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
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]
'

Comentarios

Recuerde que el Decoder objeto guarda el estado entre las llamadas a GetChars.Remember that the Decoder object saves state between calls to GetChars. Cuando la aplicación se realiza con un flujo de datos, se debe establecer el flush parámetro true para asegurarse de que se vacíe la información de estado.When the application is done with a stream of data, it should set the flush parameter to true to make sure that the state information is flushed. Con esta configuración, el descodificador pasa por alto los bytes no válidos al final del bloque de datos y borra el búfer interno.With this setting, the decoder ignores invalid bytes at the end of the data block and clears the internal buffer.

La matriz exacta para calcular el tamaño que GetChars requiere para almacenar los caracteres resultantes, debe usar la aplicación GetCharCount.To calculate the exact array size that GetChars requires to store the resulting characters, the application should use GetCharCount.

Si GetChars se llama con flush establecido en false, el descodificador almacena los bytes finales al final del bloque de datos en un búfer interno y se utilizan en la siguiente operación de descodificación.If GetChars is called with flush set to false, the decoder stores trailing bytes at the end of the data block in an internal buffer and uses them in the next decoding operation. La aplicación debe llamar a GetCharCount en un bloque de datos inmediatamente antes de llamar a GetChars en el mismo bloque, para que todos los bytes finales del bloque anterior se incluyen en el cálculo.The application should call GetCharCount on a block of data immediately before calling GetChars on the same block, so that any trailing bytes from the previous block are included in the calculation.

Si la aplicación consiste en convertir muchos segmentos de un flujo de entrada, considere el uso de la Convert método.If your application is to convert many segments of an input stream, consider using the Convert method. GetChars se iniciará una excepción si el búfer de salida no es suficientemente grande, pero Convert se rellenará tanto espacio como sea posible y devolverá los bytes leídos y caracteres escritos.GetChars will throw an exception if the output buffer isn't large enough, but Convert will fill as much space as possible and return the bytes read and chars written. Consulte también el Encoding.GetChars tema para obtener más comentarios.Also see the Encoding.GetChars topic for more comments.

Consulte también:

GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean)

Cuando se reemplaza en una clase derivada, descodifica una secuencia de bytes de la matriz de bytes especificada y cualquier byte del búfer interno en la 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. Un parámetro indica si el estado interno del descodificador se borra después de la conversión.A parameter indicates whether to clear the internal state of the decoder after the conversion.

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[]

Matriz de bytes que contiene la secuencia de bytes que se va a descodificar.The byte array containing the sequence of bytes to decode.

byteIndex
Int32 Int32 Int32 Int32

Índice del primer byte que se va a descodificar.The index of the first byte to decode.

byteCount
Int32 Int32 Int32 Int32

Número de bytes que se van a descodificar.The number of bytes to decode.

chars
Char[]

Matriz de caracteres que contendrá el juego de caracteres resultante.The character array to contain the resulting set of characters.

charIndex
Int32 Int32 Int32 Int32

Índice en el que se inicia la escritura del juego de caracteres resultante.The index at which to start writing the resulting set of characters.

flush
Boolean Boolean Boolean Boolean

Es true para borrar el estado interno del descodificador después de la conversión; de lo contrario, es false.true to clear the internal state of the decoder after the conversion; otherwise, false.

Devoluciones

Número real de caracteres escrito en el parámetro chars.The actual number of characters written into the chars parameter.

Excepciones

bytes es null (Nothing).bytes is null (Nothing).

O bien-or- chars es null (Nothing).chars is null (Nothing).

El valor de byteIndex, byteCount o charIndex es menor que cero.byteIndex or byteCount or charIndex is less than zero.

O bien-or- byteindex y byteCount no denotan un intervalo válido en bytes.byteindex and byteCount do not denote a valid range in bytes.

O bien-or- charIndex no es un índice válido para chars.charIndex is not a valid index in chars.

chars no tiene suficiente capacidad desde charIndex hasta el final de la matriz para aloja los caracteres resultantes.chars does not have enough capacity from charIndex to the end of the array to accommodate the resulting characters.

Se ha producido una acción de reserva (vea Codificación de caracteres en .NET Framework para obtener una explicación completa)A fallback occurred (see Character Encoding in the .NET Framework for fuller explanation) - y --and- El valor de Fallback está establecido en DecoderExceptionFallback.Fallback is set to DecoderExceptionFallback.

Comentarios

Recuerde que el Decoder objeto guarda el estado entre las llamadas a GetChars.Remember that the Decoder object saves state between calls to GetChars. Cuando la aplicación se realiza con un flujo de datos, se debe establecer el flush parámetro true para asegurarse de que se vacíe la información de estado.When the application is done with a stream of data, it should set the flush parameter to true to make sure that the state information is flushed. Con esta configuración, el descodificador pasa por alto los bytes no válidos al final del bloque de datos y borra el búfer interno.With this setting, the decoder ignores invalid bytes at the end of the data block and clears the internal buffer.

La matriz exacta para calcular el tamaño que GetChars requiere para almacenar los caracteres resultantes, debe usar la aplicación GetCharCount.To calculate the exact array size that GetChars requires to store the resulting characters, the application should use GetCharCount.

Si GetChars se llama con flush establecido en false, el descodificador almacena los bytes finales al final del bloque de datos en un búfer interno y se utilizan en la siguiente operación de descodificación.If GetChars is called with flush set to false, the decoder stores trailing bytes at the end of the data block in an internal buffer and uses them in the next decoding operation. La aplicación debe llamar a GetCharCount en un bloque de datos inmediatamente antes de llamar a GetChars en el mismo bloque, para que todos los bytes finales del bloque anterior se incluyen en el cálculo.The application should call GetCharCount on a block of data immediately before calling GetChars on the same block, so that any trailing bytes from the previous block are included in the calculation.

Si la aplicación consiste en convertir muchos segmentos de un flujo de entrada, considere el uso de la Convert método.If your application is to convert many segments of an input stream, consider using the Convert method. GetChars se iniciará una excepción si el búfer de salida no es suficientemente grande, pero Convert se rellenará tanto espacio como sea posible y devolverá los bytes leídos y caracteres escritos.GetChars will throw an exception if the output buffer isn't large enough, but Convert will fill as much space as possible and return the bytes read and chars written. Consulte también el Encoding.GetChars tema para obtener más comentarios.Also see the Encoding.GetChars topic for more comments.

Consulte también:

Se aplica a