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 Encoding.GetChars (Byte*, Int32, Char*, Int32)

 

Data di pubblicazione: ottobre 2016

Quando ne viene eseguito l'override in una classe derivata, decodifica una sequenza di byte a partire dal puntatore ai byte specificato in un set di caratteri archiviati a partire dal puntatore ai caratteri specificato.

Questa API non è conforme a CLS.

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

[SecurityCriticalAttribute]
[CLSCompliantAttribute(false)]
[ComVisibleAttribute(false)]
public virtual unsafe int GetChars(
	byte* bytes,
	int byteCount,
	char* chars,
	int charCount
)

Parametri

bytes
Type: System.Byte*

Puntatore al primo byte da decodificare.

byteCount
Type: System.Int32

Numero di byte da decodificare.

chars
Type: System.Char*

Puntatore alla posizione in cui iniziare a scrivere il set di caratteri risultante.

charCount
Type: System.Int32

Numero massimo di caratteri da scrivere.

Valore restituito

Type: System.Int32

Numero effettivo di caratteri scritti nella posizione indicata dal parametro chars.

Exception Condition
ArgumentNullException

bytes è null.

-oppure-

chars è null.

ArgumentOutOfRangeException

byteCount o charCount è minore di zero.

ArgumentException

charCount è minore del numero di caratteri risultante.

DecoderFallbackException

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

-e-

DecoderFallback è impostato su DecoderExceptionFallback.

Per calcolare la dimensione esatta della matrice che GetChars è necessario per archiviare i caratteri risultanti, è necessario utilizzare il GetCharCount metodo. Per calcolare la dimensione massima della matrice, utilizzare il GetMaxCharCount metodo. Il GetCharCount metodo consente in genere l'allocazione di memoria inferiore, mentre il GetMaxCharCount metodo in genere viene eseguito più velocemente.

Encoding.GetChars Ottiene i caratteri da una sequenza di byte di input. Encoding.GetChars è diverso da quello Decoder.GetChars poiché Encoding prevede conversioni discrete, mentre Decoder è destinato a più passaggi su un singolo flusso di input.

Se il conversione dei dati sono disponibili solo in blocchi sequenziali (ad esempio i dati letti da un flusso) o se la quantità di dati è talmente grande che deve essere suddiviso in blocchi più piccoli, è necessario utilizzare il Decoder o Encoder oggetto fornito dal GetDecoder o GetEncoder (metodo), rispettivamente, di una classe derivata.

Nota   questo metodo deve operare su caratteri Unicode e non su dati binari arbitrari, ad esempio matrici di byte. Se è necessario codificare dati binari arbitrari in testo, è necessario utilizzare un protocollo, ad esempio uuencode, verrà implementate da metodi quali Convert.ToBase64CharArray.

Il GetCharCount metodo determina il numero di caratteri risultanti dalla decodifica di una sequenza di byte e GetChars metodo esegue la decodifica effettiva. Il Encoding.GetChars metodo prevede conversioni discrete, a differenza di Decoder.GetChars metodo che gestisce più passaggi su un singolo flusso di input.

Versioni diverse di GetCharCount e GetChars sono supportati. Di seguito sono riportate alcune considerazioni di programmazione per l'utilizzo di questi metodi:

  • L'applicazione potrebbe essere necessario decodificare più byte di input da una tabella codici ed elaborare i byte utilizzando più chiamate. In questo caso, è probabilmente necessario mantenere lo stato tra chiamate, perché le sequenze di byte possono essere interrotta durante l'elaborazione in batch. (Ad esempio, può terminare una parte di una sequenza shift ISO-2022 GetChars chiamare e continuare all'inizio del successivo GetChars chiamare. Encoding.GetChars chiama il fallback di quelle sequenze incomplete, ma Decoder ricorderà quelle sequenze per la chiamata successiva.)

  • Se l'applicazione gestisce l'output delle stringhe, il GetString metodo consigliato. Poiché questo metodo deve controllare la lunghezza della stringa e allocare un buffer, risulta leggermente più lento, ma risultante String tipo è preferibile.

  • La versione byte di GetChars(Byte*, Int32, Char*, Int32) consente alcune tecniche veloci, in particolare con più chiamate al buffer di grandi dimensioni. Tenere presente tuttavia che questa versione del metodo a volte è sicuro, poiché i puntatori sono necessari.

  • Se l'applicazione deve convertire una grande quantità di dati, è necessario che riutilizzi il buffer di output. In questo caso, il GetChars(Byte[], Int32, Int32, Char[], Int32) versione che supporta buffer di caratteri di output è la scelta migliore.

  • Si consiglia di utilizzare il Decoder.Convert metodo invece GetCharCount. Il metodo di conversione converte tutti i dati possibili e genera un'eccezione se il buffer di output è troppo piccolo. Per la decodifica continua di un flusso, questo metodo è spesso la scelta migliore.

SecurityCriticalAttribute

Requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Universal Windows Platform
Disponibile da 10
.NET Framework
Disponibile da 2.0
Torna all'inizio
Mostra: