UTF8Encoding.GetString(Byte[], Int32, Int32) UTF8Encoding.GetString(Byte[], Int32, Int32) UTF8Encoding.GetString(Byte[], Int32, Int32) UTF8Encoding.GetString(Byte[], Int32, Int32) Method

Definición

Descodifica un intervalo de bytes de una matriz de bytes en una cadena.Decodes a range of bytes from a byte array into a string.

public:
 override System::String ^ GetString(cli::array <System::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
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.The byte array containing the sequence of bytes to decode.

index
Int32 Int32 Int32 Int32

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

count
Int32 Int32 Int32 Int32

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

Devoluciones

Objeto String que contiene los resultados obtenidos al descodificar la secuencia de bytes especificada.A String containing the results of decoding the specified sequence of bytes.

Excepciones

index o count es menor que cero.index or count is less than zero.

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

Está habilitada la detección de errores, y bytes contiene una secuencia de bytes no válida.Error detection is enabled, and bytes contains an invalid sequence of bytes.

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 complete explanation) - y --and- El valor de DecoderFallback está establecido en DecoderExceptionFallback.DecoderFallback is set to DecoderExceptionFallback.

Ejemplos

En el ejemplo siguiente se inicializa una matriz mediante una llamada a la GetByteCount método para determinar exactamente cuántos bytes son necesarios para una cadena codificada y, a continuación, agregar el tamaño de la marca de orden de bytes (BOM).The following example initializes an array by calling the GetByteCount method to determine exactly how many bytes are required for an encoded string and then adding the size of the byte order mark (BOM). El ejemplo llama a la GetPreamble método para almacenar la marca BOM a la matriz antes de llamar a la GetBytes método para almacenar los bytes codificados en la matriz.The example then calls the GetPreamble method to store the BOM to the array before calling the GetBytes method to store the encoded bytes to the array. El ejemplo llama a la GetString método para descodificar la cadena.The example then calls the GetString method to decode the string.

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.Note that in this case the decoded string differs from the original string, since it begins with a 16-bit byte order mark U+FFFD. Esto significa que las dos cadenas se consideran diferente, y que, si la cadena es la salida, se mostrará la lista de materiales como el carácter de reemplazo "?".This means that the two strings will compare as unequal, and that if the string is output, the BOM will be displayed as the replacement character "?". Para quitar la marca BOM al principio de la cadena, puede llamar a la String.TrimStart método.To remove the BOM at the beginning of the string, you can call the String.TrimStart method.

Comentarios

Con la detección de errores, una secuencia no válida hace que este método producir una ArgumentException excepción.With error detection, an invalid sequence causes this method to throw an ArgumentException exception. Sin detección de errores, se omiten las secuencias no válidas y se produce ninguna excepción.Without error detection, invalid sequences are ignored, and no exception is thrown.

Si el intervalo de bytes que se desea descodificar incluye la marca de orden de bytes (BOM) y se devolvió la matriz de bytes por un método de un tipo compatible con no BOM, el carácter U + FFFE se incluye en la matriz de caracteres devuelta por este método.If the range of bytes to be decoded includes the byte order mark (BOM) and the byte array was returned by a method of a non-BOM aware type, the character U+FFFE is included in the character array returned by this method. Puede quitar mediante una llamada a la String.TrimStart método.You can remove it by calling the String.TrimStart method.

Datos que va a convertir, como los datos leídos de una secuencia, podrían ser disponibles sólo en bloques secuenciales.Data to be converted, such as data read from a stream, might be available only in sequential blocks. En este caso, o si la cantidad de datos es tan grande que debe dividirse en bloques más pequeños, use el Decoder o Encoder proporcionada por el GetDecoder método o la GetEncoder método, respectivamente.In this case, or if the amount of data is so large that it needs to be divided into smaller blocks, use the Decoder or the Encoder provided by the GetDecoder method or the GetEncoder method, respectively.

Se aplica a

Consulte también: