Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo UnicodeEncoding.GetString (Byte[], Int32, Int32)

 

Data di pubblicazione: ottobre 2016

Decodifica un intervallo di byte da una matrice di byte in una stringa.

Spazio dei nomi:   System.Text
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(false)]
public override string GetString(
	byte[] bytes,
	int index,
	int count
)

Parametri

bytes
Type: System.Byte[]

Matrice di byte contenente la sequenza di byte da decodificare.

index
Type: System.Int32

Indice del primo byte da decodificare.

count
Type: System.Int32

Numero di byte da decodificare.

Valore restituito

Type: System.String

Oggetto String contenente i risultati di decodifica della sequenza di byte specificata.

Exception Condition
ArgumentNullException

bytes è null (Nothing).

ArgumentOutOfRangeException

index o count è minore di zero.

-oppure-

index e count non indicano un intervallo valido in bytes.

ArgumentException

Il rilevamento degli errori è abilitato, e bytes contiene una sequenza di byte non valida.

DecoderFallbackException

Si è verificato un fallback. Vedere Codifica di caratteri in .NET Framework per una spiegazione completa

-e-

DecoderFallback è impostato su DecoderExceptionFallback.

Con il rilevamento di errori, una sequenza non valida, questo metodo generare un ArgumentException. Senza il rilevamento di errori, le sequenze non valide vengono ignorate e viene generata alcuna eccezione.

Se l'intervallo di byte da decodificare include il byte order mark (BOM) e la matrice di byte è stata restituita da un metodo di un tipo compatibile con non DBA, il carattere U + FFFE è incluso nella matrice di caratteri restituita da questo metodo. È possibile rimuoverlo chiamando il String.TrimStart metodo.

Dati da convertire, ad esempio i dati letti da un flusso, potrebbero essere disponibili solo in blocchi sequenziali. In questo caso, se la quantità di dati è talmente grande che deve essere la suddivisione in blocchi più piccoli, l'applicazione deve utilizzare il Decoder o Encoder oggetto fornito dal GetDecoder o GetEncoder (metodo), rispettivamente.

Nell'esempio seguente consente di inizializzare una matrice tramite la chiamata di GetByteCount metodo per determinare esattamente il numero di byte è necessario per una stringa codificata e quindi aggiungere le dimensioni del byte order mark (BOM). Nell'esempio viene quindi chiamato il GetPreamble metodo per archiviare il BOM nella matrice prima di chiamare il GetBytes metodo per archiviare i byte nella matrice codificati. Nell'esempio viene quindi chiamato il GetString metodo per decodificare la stringa.

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...

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. 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 "?". To remove the BOM at the beginning of the string, you can call the M:System.String.TrimStart(System.Char[]) method.

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 2.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: