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 UTF8Encoding.GetByteCount (Char[], Int32, Int32)

 

Data di pubblicazione: ottobre 2016

Calcola il numero di byte prodotti dalla codifica di un set di caratteri dalla matrice di caratteri specificata.

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

public override int GetByteCount(
	char[] chars,
	int index,
	int count
)

Parametri

chars
Type: System.Char[]

Matrice di caratteri contenente il set di caratteri da codificare.

index
Type: System.Int32

Indice del primo carattere da codificare.

count
Type: System.Int32

Numero di caratteri da codificare.

Valore restituito

Type: System.Int32

Numero di byte prodotti dalla codifica dei caratteri specificati.

Exception Condition
ArgumentNullException

chars è null.

ArgumentOutOfRangeException

index o count è minore di zero.

-oppure-

index e count non indicano un intervallo valido in chars.

-oppure-

Il numero di byte ottenuto è maggiore del numero massimo che può essere restituito come numero intero.

ArgumentException

Il rilevamento errori è abilitato e chars contiene una sequenza di carattere non valida.

EncoderFallbackException

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

-e-

La proprietà EncoderFallback è impostata su EncoderExceptionFallback.

Per calcolare la dimensione di matrice esatti necessari per GetBytes per archiviare i byte risultanti, chiamare l'oggetto utilizza GetByteCount (metodo). Per calcolare la dimensione massima della matrice, si chiama il GetMaxByteCount metodo. Il GetByteCount metodo alloca in genere minore di memoria, mentre il GetMaxByteCount metodo in genere viene eseguito più velocemente.

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

Per garantire che i byte codificati vengano decodificati correttamente quando vengono salvati come un file o un flusso, è possibile anteporre un flusso di byte codificati con un preambolo. Inserendo il preambolo all'inizio di un flusso di byte (ad esempio all'inizio di una serie di byte da scrivere in un file) è responsabilità dello sviluppatore e il numero di byte del preambolo non verrà riportato nel valore restituito dal GetByteCount metodo.

Nell'esempio seguente viene compilata una matrice con un alfabeto latino di lettere maiuscole e minuscole e viene chiamato il GetByteCount(Char[], Int32, Int32) metodo per determinare il numero di byte necessari per codificare i caratteri minuscoli latini. Viene quindi visualizza queste informazioni con il numero totale di byte necessari se viene aggiunto un byte order mark. Confronta con il valore restituito da questo numero di GetMaxByteCount metodo, che indica il numero massimo di byte necessari per codificare i caratteri minuscoli latini.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      int uppercaseStart = 0x0041;
      int uppercaseEnd = 0x005a;
      int lowercaseStart = 0x0061;
      int lowercaseEnd = 0x007a;
      // Instantiate a UTF8 encoding object with BOM support.
      Encoding utf8 = new UTF8Encoding(true);

      // Populate array with characters.
      char[] chars = new char[lowercaseEnd - lowercaseStart + uppercaseEnd - uppercaseStart + 2];
      int index = 0;
      for (int ctr = uppercaseStart; ctr <= uppercaseEnd; ctr++) {
         chars[index] = (char)ctr;
         index++;
      }
      for (int ctr = lowercaseStart; ctr <= lowercaseEnd; ctr++) {
         chars[index] = (char)ctr;
         index++;
      }

      // Display the bytes needed for the lowercase characters.
      Console.WriteLine("Bytes needed for lowercase Latin characters:");
      Console.WriteLine("   Maximum:         {0,5:N0}",
                        utf8.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual:          {0,5:N0}",
                        utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual with BOM: {0,5:N0}",
                        utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1) +
                                          utf8.GetPreamble().Length);
   }
}
// The example displays the following output:
//       Bytes needed for lowercase Latin characters:
//          Maximum:            81
//          Actual:             26
//          Actual with BOM:    29

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: