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

 

Data di pubblicazione: ottobre 2016

Quando ne viene eseguito l'override in una classe derivata, codifica un set di caratteri a partire dal puntatore ai caratteri specificato in una sequenza di byte archiviati a partire dal puntatore ai byte 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 GetBytes(
	char* chars,
	int charCount,
	byte* bytes,
	int byteCount
)

Parametri

chars
Type: System.Char*

Puntatore al primo carattere da codificare.

charCount
Type: System.Int32

Numero di caratteri da codificare.

bytes
Type: System.Byte*

Puntatore alla posizione in cui iniziare a scrivere la sequenza di byte risultante.

byteCount
Type: System.Int32

Numero massimo di byte da scrivere.

Valore restituito

Type: System.Int32

Numero effettivo di byte scritti nella posizione indicata dal parametro bytes.

Exception Condition
ArgumentNullException

chars è null.

-oppure-

bytes è null.

ArgumentOutOfRangeException

charCount o byteCount è minore di zero.

ArgumentException

byteCount è minore del numero di byte risultante.

EncoderFallbackException

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

-e-

EncoderFallback è impostato su EncoderExceptionFallback.

Per calcolare la dimensione esatta della matrice che GetBytes è necessario per archiviare i byte risultanti, chiamare il metodo di GetByteCount metodo. Per calcolare la dimensione massima della matrice, chiamare il GetMaxByteCount metodo. Il GetByteCount metodo consente in genere l'allocazione di memoria inferiore, mentre il GetMaxByteCount metodo in genere viene eseguito più velocemente.

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.

Il GetByteCount metodo determina il numero di byte risultanti dalla codifica di un set di caratteri Unicode e GetBytes metodo esegue la codifica. Il GetBytes metodo prevede conversioni discrete, a differenza di Encoder.GetBytes metodo che gestisce più conversioni su un singolo flusso di input.

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

  • L'applicazione potrebbe essere necessario codificare molti caratteri di input a una tabella codici ed elaborare i caratteri usando più chiamate. In questo caso, è probabilmente necessario mantenere lo stato tra chiamate, prendendo in considerazione lo stato in cui viene mantenuto per la Encoder dell'oggetto in uso. (Ad esempio, una sequenza di caratteri che include coppie di surrogati potrebbe terminare con un surrogato alto. Il Encoder ricorderà tale surrogato alto in modo che può essere combinato con un surrogato basso all'inizio di una chiamata successiva. Encoding non sarà in grado di gestire lo stato, pertanto verrà inviato il carattere per il EncoderFallback.)

  • Se l'applicazione gestisce gli input di stringa, utilizzare la versione della stringa GetBytes.

  • La versione di buffer di caratteri Unicode di GetBytes(Char*, Int32, Byte*, Int32) consente alcune tecniche veloci, in particolare con più chiamate utilizzando il Encoder oggetto o l'inserimento nel buffer esistenti. 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 GetBytes versione che supporta matrici di byte è la scelta migliore.

  • Si consiglia di utilizzare il Encoder.Convert metodo invece GetByteCount. Il metodo di conversione converte tutti i dati possibili e generare un'eccezione se il buffer di output è troppo piccolo. Per la codifica 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
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Torna all'inizio
Mostra: