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 Decoder.GetChars (Byte[], Int32, Int32, Char[], Int32)

 

Data di pubblicazione: ottobre 2016

Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte dalla matrice di byte specificata e i byte nel buffer interno nella matrice di caratteri specificato.

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

public abstract int GetChars(
	byte[] bytes,
	int byteIndex,
	int byteCount,
	char[] chars,
	int charIndex
)

Parametri

bytes
Type: System.Byte[]

Matrice di byte contenente la sequenza di byte da decodificare.

byteIndex
Type: System.Int32

Indice del primo byte da decodificare.

byteCount
Type: System.Int32

Numero di byte da decodificare.

chars
Type: System.Char[]

Matrice di caratteri che deve contenere il set di caratteri risultante.

charIndex
Type: System.Int32

Indice in corrispondenza del quale iniziare a scrivere il set di caratteri risultante.

Valore restituito

Type: System.Int32

Numero effettivo di caratteri scritti in chars.

Exception Condition
ArgumentNullException

bytes è null (Nothing).

-oppure-

chars è null (Nothing).

ArgumentOutOfRangeException

byteIndex o byteCount o charIndex è minore di zero.

-oppure-

byteindex e byteCount non indicano un intervallo valido in bytes.

-oppure-

charIndex non è un indice valido in chars.

ArgumentException

chars non dispone di sufficiente capacità da charIndex alla fine della matrice per contenere i caratteri risultanti.

DecoderFallbackException

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

-e-

Fallback è impostato su DecoderExceptionFallback.

Tenere presente che il Decoder oggetto Salva lo stato tra le chiamate a GetChars. Quando l'applicazione viene eseguita con un flusso di dati, è necessario impostare il flush parametro true per assicurarsi che le informazioni sullo stato vengano eliminate. Con questa impostazione, il decodificatore ignora i byte non validi alla fine del blocco di dati e cancella il buffer interno.

Per calcolare la dimensione esatta della matrice che GetChars è necessario per archiviare i caratteri risultanti, l'applicazione deve utilizzare GetCharCount.

Se GetChars viene chiamato con flush impostato su false, il decodificatore archivia i byte finali alla fine del blocco di dati in un buffer interno e li utilizza nella successiva operazione di decodifica. L'applicazione deve chiamare GetCharCount in un blocco di dati immediatamente prima di chiamare GetChars sullo stesso blocco, in modo che i byte finali del blocco precedente vengono inclusi nel calcolo.

Se l'applicazione deve convertire diversi segmenti di un flusso di input, è consigliabile utilizzare il Convert metodo. GetChars verrà generata un'eccezione se il buffer di output non è abbastanza grande, ma Convert occuperà più spazio possibile e restituire i byte letti e i caratteri scritti. Vedere anche il Encoding.GetChars argomento per ulteriori commenti.

Nell'esempio seguente viene illustrato come decodificare un intervallo di elementi da una matrice di byte e memorizzarli in una matrice di caratteri Unicode. Il GetCharCount metodo viene utilizzato per calcolare il numero di caratteri necessari per archiviare gli elementi decodificati nella matrice bytes. Il GetChars metodo decodifica gli elementi specificati nella matrice di byte e li archivia nella nuova matrice di caratteri.

using System;
using System.Text;

class UnicodeEncodingExample {
    public static void Main() {
        Char[] chars;
        Byte[] bytes = new Byte[] {
            85, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0
        };

        Decoder uniDecoder = Encoding.Unicode.GetDecoder();

        int charCount = uniDecoder.GetCharCount(bytes, 0, bytes.Length);
        chars = new Char[charCount];
        int charsDecodedCount = uniDecoder.GetChars(bytes, 0, bytes.Length, chars, 0);

        Console.WriteLine(
            "{0} characters used to decode bytes.", charsDecodedCount
        );

        Console.Write("Decoded chars: ");
        foreach (Char c in chars) {
            Console.Write("[{0}]", c);
        }
        Console.WriteLine();
    }
}

/* This code example produces the following output.

7 characters used to decode bytes.
Decoded chars: [U][n][i][c][o][d][e]

*/

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
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: