Encoder.GetBytes Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 false
en , 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.
- 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
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
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]
'