UTF8Encoding.GetString(Byte[], Int32, Int32) 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í.
Descodifica un intervalo de bytes de una matriz de bytes en una cadena.
public:
override System::String ^ GetString(cli::array <System::Byte> ^ bytes, int index, int count);
public override string GetString (byte[] bytes, int index, int count);
[System.Runtime.InteropServices.ComVisible(false)]
public override string GetString (byte[] bytes, int index, int count);
override this.GetString : byte[] * int * int -> string
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetString : byte[] * int * int -> string
Public Overrides Function GetString (bytes As Byte(), index As Integer, count As Integer) As String
Parámetros
- bytes
- Byte[]
Matriz de bytes que contiene la secuencia de bytes que se va a descodificar.
- index
- Int32
Índice del primer byte que se va a descodificar.
- count
- Int32
Número de bytes que se van a descodificar.
Devoluciones
Objeto String que contiene los resultados obtenidos al descodificar la secuencia de bytes especificada.
- Atributos
Excepciones
bytes
es null
.
index
o count
es menor que cero.
O bien
index
y count
no denotan un intervalo válido en bytes
.
Está habilitada la detección de errores, y bytes
contiene una secuencia de bytes no válida.
Se ha producido una reserva (para más información, vea Codificación de caracteres en .NET)
- y -
El valor de DecoderFallback está establecido en DecoderExceptionFallback.
Ejemplos
En el ejemplo siguiente se inicializa una matriz mediante una llamada al GetByteCount método para determinar exactamente cuántos bytes se necesitan para una cadena codificada y, a continuación, se agrega el tamaño de la marca de orden de bytes (BOM). A continuación, el ejemplo llama al GetPreamble método para almacenar la lista de materiales en la matriz antes de llamar al GetBytes método para almacenar los bytes codificados en la matriz. A continuación, el ejemplo llama al GetString método para descodificar la cadena.
using System;
using System.Text;
public class Example
{
public static void Main()
{
UTF8Encoding utf8 = new UTF8Encoding(true, true);
String s = "It was the best of times, it was the worst of times...";
// We need to dimension the array, since we'll populate it with 2 method calls.
Byte[] bytes = new Byte[utf8.GetByteCount(s) + utf8.GetPreamble().Length];
// Encode the string.
Array.Copy(utf8.GetPreamble(), bytes, utf8.GetPreamble().Length);
utf8.GetBytes(s, 0, s.Length, bytes, utf8.GetPreamble().Length);
// Decode the byte array.
String s2 = utf8.GetString(bytes, 0, bytes.Length);
Console.WriteLine(s2);
}
}
// The example displays the following output:
// ?It was the best of times, it was the worst of times...
Imports System.Text
Module Example
Public Sub Main()
Dim utf8 As New UTF8Encoding(True, True)
Dim s As String = "It was the best of times, it was the worst of times..."
' We need to dimension the array, since we'll populate it with 2 method calls.
Dim bytes(utf8.GetByteCount(s) + utf8.GetPreamble().Length - 1) As Byte
' Encode the string.
Array.Copy(utf8.GetPreamble(), bytes, utf8.GetPreamble().Length)
utf8.GetBytes(s, 0, s.Length, bytes, utf8.GetPreamble().Length)
' Decode the byte array.
Dim s2 As String = utf8.GetString(bytes, 0, bytes.Length)
Console.WriteLine(s2)
End Sub
End Module
' The example displays the following output:
' ?It was the best of times, it was the worst of times...
Tenga en cuenta que, en este caso, la cadena descodificada difiere de la cadena original, ya que comienza con una marca de orden de bytes de 16 bits U+FFFD. Esto significa que las dos cadenas se compararán como desiguales y que, si la cadena es la salida, la boM se mostrará como el carácter de reemplazo "?". Para quitar la lista de materiales al principio de la cadena, puede llamar al String.TrimStart método .
Comentarios
Con la detección de errores, una secuencia no válida hace que este método produzca una ArgumentException excepción. Sin la detección de errores, se omiten las secuencias no válidas y no se produce ninguna excepción.
Si el intervalo de bytes que se va a descodificar incluye la marca de orden de bytes (BOM) y la matriz de bytes fue devuelta por un método de un tipo que no tenga en cuenta la lista de materiales, el carácter U+FFFE se incluye en la matriz de caracteres devuelta por este método. Para quitarlo, llame al String.TrimStart método .
Los datos que se van a convertir, como los datos leídos de una secuencia, pueden estar disponibles solo en bloques secuenciales. En este caso, o si la cantidad de datos es tan grande que debe dividirse en bloques más pequeños, utilice o el DecoderEncoder proporcionado por el GetDecoder método o el GetEncoder método, respectivamente.