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 Encoder.GetBytes (Char[], Int32, Int32, Byte[], Int32, Boolean)

 

Data di pubblicazione: ottobre 2016

Quando sottoposto a override in una classe derivata, codifica un set di caratteri dalla matrice di caratteri specificata e tutti i caratteri nel buffer interno nella matrice di byte specificata. Un parametro indica se cancellare lo stato interno del codificatore dopo la conversione.

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

public abstract int GetBytes(
	char[] chars,
	int charIndex,
	int charCount,
	byte[] bytes,
	int byteIndex,
	bool flush
)

Parametri

chars
Type: System.Char[]

Matrice di caratteri contenente il set di caratteri da codificare.

charIndex
Type: System.Int32

Indice del primo carattere da codificare.

charCount
Type: System.Int32

Numero di caratteri da codificare.

bytes
Type: System.Byte[]

Matrice di byte che deve contenere la sequenza di byte risultante.

byteIndex
Type: System.Int32

Indice in corrispondenza del quale iniziare a scrivere la sequenza di byte risultante.

flush
Type: System.Boolean

true Per cancellare lo stato interno del codificatore dopo la conversione. in caso contrario, false.

Valore restituito

Type: System.Int32

Numero effettivo di byte scritti in bytes.

Exception Condition
ArgumentNullException

chars è null (Nothing).

-oppure-

bytes è null (Nothing).

ArgumentOutOfRangeException

charIndex o charCount o byteIndex è minore di zero.

-oppure-

charIndex e charCount non identificano un intervallo valido in chars.

-oppure-

byteIndex non è un indice valido in bytes.

ArgumentException

bytes non dispone di sufficiente capacità da byteIndex alla fine della matrice per contenere i byte risultanti.

EncoderFallbackException

Si è verificato un fallback. Per una spiegazione completa, vedere l'articolo relativo alla codifica di caratteri in .NET Framework

-e-

Fallback è impostato su EncoderExceptionFallback.

Tenere presente che il Encoder oggetto Salva lo stato tra le chiamate a GetBytes. Quando l'applicazione viene eseguita con un flusso di dati, è necessario impostare il flush parametro true nell'ultima chiamata a GetBytes per assicurarsi che le informazioni sullo stato vengano eliminate e che i byte codificati vengano terminati correttamente. Con questa impostazione, il codificatore ignora i byte non validi alla fine del blocco di dati, ad esempio surrogati senza corrispondenza o sequenze di combinazione incomplete e cancella il buffer interno.

Per calcolare il buffer esatto dimensione che GetBytes è necessario per archiviare i caratteri risultanti, l'applicazione deve utilizzare GetByteCount.

Se GetBytes viene chiamato con flush impostato su false, il codificatore archivia i byte finali alla fine del blocco di dati in un buffer interno e li utilizza nella successiva operazione di codifica. L'applicazione deve chiamare GetByteCount in un blocco di dati immediatamente prima di chiamare GetBytes sullo stesso blocco, in modo che i caratteri 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. GetBytes verrà generata un'eccezione se il buffer di output non è abbastanza grande, ma Convert occuperà più spazio possibile e verranno restituiti i caratteri letti e scritti. Vedere anche il Encoding.GetBytes argomento per ulteriori commenti.

Nell'esempio seguente viene illustrato come codificare un intervallo di elementi da una matrice di caratteri e archiviare i byte codificati in un intervallo di elementi in una matrice di byte. Il GetByteCount metodo viene utilizzato per determinare la dimensione della matrice richieste da GetBytes.

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]

*/

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: