Encoder.GetBytes Método

Definición

Cuando se reemplaza en una clase derivada, codifica un juego de caracteres en una secuencia de bytes.

Sobrecargas

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

Cuando se invalida en una clase derivada, codifica un juego de caracteres del intervalo de caracteres de entrada y cualquier carácter del búfer interno en una secuencia de bytes que se almacenan en el intervalo de bytes de entrada. Un parámetro indica si se debe borrar el estado interno del codificador después de la conversión.

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

Cuando se reemplaza en una clase derivada, codifica un juego de caracteres a partir del puntero de carácter especificado y cualquier carácter del búfer interno en una secuencia de bytes que se almacenan a partir del puntero de byte especificado. Un parámetro indica si se debe borrar el estado interno del codificador después de la conversión.

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

Cuando se reemplaza en una clase derivada, codifica un juego de caracteres de la matriz de caracteres especificada y cualquier carácter del búfer interno en la matriz de bytes especificada. Un parámetro indica si se debe borrar el estado interno del codificador después de la conversión.

Comentarios

Recuerde que el objeto guarda el Encoder estado entre las llamadas a GetBytes. Cuando la aplicación se realiza con un flujo de datos, debe establecer el flush parámetro true en en la última llamada a para GetBytes asegurarse de que la información de estado está vacía y de que los bytes codificados se terminan correctamente. Con esta configuración, el codificador omite bytes no válidos al final del bloque de datos, como suplentes no coincidentes o secuencias de combinación incompletas, y borra el búfer interno.

Para calcular el tamaño exacto del búfer que GetBytes requiere para almacenar los caracteres resultantes, la aplicación debe usar GetByteCount.

Si GetBytes se llama a con flush establecido falseen , el codificador almacena bytes finales al final del bloque de datos en un búfer interno y los usa en la siguiente operación de codificación. La aplicación debe llamar a GetByteCount en un bloque de datos inmediatamente antes de llamar a GetBytes en el mismo bloque, de modo que los caracteres finales del bloque anterior se incluyan en el cálculo.

Si la aplicación va a convertir muchos segmentos de un flujo de entrada, considere la posibilidad de usar el Convert método . GetBytes producirá una excepción si el búfer de salida no es lo suficientemente grande, pero Convert rellenará tanto espacio como sea posible y devolverá los caracteres leídos y bytes escritos. Consulte también el Encoding.GetBytes tema para obtener más comentarios.

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

Source:
Encoder.cs
Source:
Encoder.cs
Source:
Encoder.cs

Cuando se invalida en una clase derivada, codifica un juego de caracteres del intervalo de caracteres de entrada y cualquier carácter del búfer interno en una secuencia de bytes que se almacenan en el intervalo de bytes de entrada. Un parámetro indica si se debe borrar el estado interno del codificador después de la conversión.

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

Parámetros

chars
ReadOnlySpan<Char>

Un intervalo de caracteres que se va a codificar.

bytes
Span<Byte>

Un intervalo de bytes en el que se va a escribir la secuencia de bytes resultante.

flush
Boolean

Es true para borrar el estado interno del codificador después de la conversión; de lo contrario, es false.

Devoluciones

Número real de bytes escritos en la ubicación indicada por el parámetro bytes.

Se aplica a

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

Source:
Encoder.cs
Source:
Encoder.cs
Source:
Encoder.cs

Importante

Esta API no es conforme a CLS.

Cuando se reemplaza en una clase derivada, codifica un juego de caracteres a partir del puntero de carácter especificado y cualquier carácter del búfer interno en una secuencia de bytes que se almacenan a partir del puntero de byte especificado. Un parámetro indica si se debe borrar el estado interno del codificador después de la conversión.

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

Parámetros

chars
Char*

Puntero al primer carácter que se va a codificar.

charCount
Int32

Número de caracteres que se van a codificar.

bytes
Byte*

Puntero a la ubicación en la que se iniciará la escritura de la secuencia de bytes resultante.

byteCount
Int32

Número máximo de bytes que se pueden escribir.

flush
Boolean

Es true para borrar el estado interno del codificador después de la conversión; de lo contrario, es false.

Devoluciones

Número real de bytes escritos en la ubicación indicada por el parámetro bytes.

Atributos

Excepciones

chars es null (Nothing).

O bien

bytes es null (Nothing).

charCount o byteCount es menor que cero.

El valor de byteCount es menor que el número resultante de bytes.

Se ha producido una reserva (para más información, vea Codificación de caracteres en .NET)

- y -

El valor de Fallback está establecido en EncoderExceptionFallback.

Se aplica a

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

Source:
Encoder.cs
Source:
Encoder.cs
Source:
Encoder.cs

Cuando se reemplaza en una clase derivada, codifica un juego de caracteres de la matriz de caracteres especificada y cualquier carácter del búfer interno en la matriz de bytes especificada. Un parámetro indica si se debe borrar el estado interno del codificador después de la conversión.

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

Parámetros

chars
Char[]

Matriz de caracteres que contiene el juego de caracteres que se va a codificar.

charIndex
Int32

Índice del primer carácter que se va a codificar.

charCount
Int32

Número de caracteres que se van a codificar.

bytes
Byte[]

Matriz de bytes que contendrá la secuencia de bytes resultante.

byteIndex
Int32

Índice en el que se inicia la escritura de la secuencia de bytes resultante.

flush
Boolean

Es true para borrar el estado interno del codificador después de la conversión; de lo contrario, es false.

Devoluciones

Número real de bytes escritos en bytes.

Excepciones

chars es null (Nothing).

O bien

bytes es null (Nothing).

El valor de charIndex, charCount o byteIndex es menor que cero.

O bien

charIndex y charCount no denotan un intervalo válido en chars.

O bien

byteIndex no es un índice válido para bytes.

bytes no tiene suficiente capacidad desde byteIndex hasta el final de la matriz para alojar los bytes resultantes.

Se ha producido una reserva (para más información, vea Codificación de caracteres en .NET)

- y -

El valor de Fallback está establecido en EncoderExceptionFallback.

Ejemplos

En el ejemplo siguiente se muestra cómo codificar un intervalo de elementos de una matriz de caracteres y almacenar los bytes codificados en un intervalo de elementos de una matriz de bytes. El GetByteCount método se usa para determinar el tamaño de la matriz requerida por GetBytes.

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Byte>^bytes;
   
   // Unicode characters.
   
   // Pi
   // Sigma
   array<Char>^chars = {L'\u03a0',L'\u03a3',L'\u03a6',L'\u03a9'};
   Encoder^ uniEncoder = Encoding::Unicode->GetEncoder();
   int byteCount = uniEncoder->GetByteCount( chars, 0, chars->Length, true );
   bytes = gcnew array<Byte>(byteCount);
   int bytesEncodedCount = uniEncoder->GetBytes( chars, 0, chars->Length, bytes, 0, true );
   Console::WriteLine( "{0} bytes used to encode characters.", bytesEncodedCount );
   Console::Write( "Encoded bytes: " );
   IEnumerator^ myEnum = bytes->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Byte b = safe_cast<Byte>(myEnum->Current);
      Console::Write( "[{0}]", b );
   }

   Console::WriteLine();
}

/* This code example produces the following output.

8 bytes used to encode characters.
Encoded bytes: [160][3][163][3][166][3][169][3]

*/
using System;
using System.Text;

class EncoderExample {
    public static void Main() {
        Byte[] bytes;
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };
        
        Encoder uniEncoder = Encoding.Unicode.GetEncoder();
        
        int byteCount = uniEncoder.GetByteCount(chars, 0, chars.Length, true);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = uniEncoder.GetBytes(chars, 0, chars.Length, bytes, 0, true);
        
        Console.WriteLine(
            "{0} bytes used to encode characters.", bytesEncodedCount
        );

        Console.Write("Encoded bytes: ");
        foreach (Byte b in bytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();
    }
}

/* This code example produces the following output.

8 bytes used to encode characters.
Encoded bytes: [35][0][37][0][160][3][163][3]

*/
Imports System.Text
Imports Microsoft.VisualBasic.Strings

Class EncoderExample
    
    Public Shared Sub Main()
        Dim bytes() As Byte
        ' Unicode characters.
        ' ChrW(35)  = #
        ' ChrW(37)  = %
        ' ChrW(928) = Pi
        ' ChrW(931) = Sigma
        Dim chars() As Char = {ChrW(35), ChrW(37), ChrW(928), ChrW(931)}
        
        Dim uniEncoder As Encoder = Encoding.Unicode.GetEncoder()
        
        Dim byteCount As Integer = _
            uniEncoder.GetByteCount(chars, 0, chars.Length, True)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = _
            uniEncoder.GetBytes(chars, 0, chars.Length, bytes, 0, True)
        
        Console.WriteLine( _
            "{0} bytes used to encode characters.", _
            bytesEncodedCount _
        )
        
        Console.Write("Encoded bytes: ")
        Dim b As Byte
        For Each b In  bytes
            Console.Write("[{0}]", b)
        Next b
        Console.WriteLine()
    End Sub
End Class

'This code example produces the following output.
'8 bytes used to encode characters.
'Encoded bytes: [35][0][37][0][160][3][163][3]
'

Se aplica a