Condividi tramite


UTF8Encoding.GetByteCount Metodo

Definizione

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

Overload

GetByteCount(ReadOnlySpan<Char>)

Calcola il numero di byte prodotti dalla codifica dell'intervallo di caratteri specificato.

GetByteCount(String)

Calcola il numero di byte prodotti dalla codifica dei caratteri nell'oggetto String specificato.

GetByteCount(Char*, Int32)

Calcola il numero di byte prodotti dalla codifica di un set di caratteri a partire dal puntatore ai caratteri specificato.

GetByteCount(Char[], Int32, Int32)

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

GetByteCount(ReadOnlySpan<Char>)

Origine:
UTF8Encoding.cs
Origine:
UTF8Encoding.cs
Origine:
UTF8Encoding.cs

Calcola il numero di byte prodotti dalla codifica dell'intervallo di caratteri specificato.

public:
 override int GetByteCount(ReadOnlySpan<char> chars);
public override int GetByteCount (ReadOnlySpan<char> chars);
override this.GetByteCount : ReadOnlySpan<char> -> int
Public Overrides Function GetByteCount (chars As ReadOnlySpan(Of Char)) As Integer

Parametri

chars
ReadOnlySpan<Char>

Intervallo contenente il set di caratteri da codificare.

Restituisce

Numero di byte prodotti dalla codifica dell'intervallo di caratteri specificato.

Eccezioni

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

Si è verificato un fallback (per altre informazioni, vedere Codifica dei caratteri in .NET).

-e-

EncoderFallback è impostato su EncoderExceptionFallback.

Commenti

Per calcolare le dimensioni esatte necessarie per GetBytes archiviare i byte risultanti, si chiama il GetByteCount metodo . Per calcolare le dimensioni massime, si chiama il GetMaxByteCount metodo . Il GetByteCount metodo in genere alloca meno memoria, mentre il GetMaxByteCount metodo esegue in genere più velocemente.

Con il rilevamento degli errori, una sequenza non valida causa la generazione di un'eccezione ArgumentException . Senza rilevamento errori, le sequenze non valide vengono ignorate e non viene generata alcuna eccezione.

Per assicurarsi che i byte codificati vengano decodificati correttamente quando vengono salvati come file o come flusso, è possibile prefisso un flusso di byte codificati con un preambolo. L'inserimento del 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 nel preambolo non si riflette nel valore restituito dal GetByteCount metodo.

Si applica a

GetByteCount(String)

Origine:
UTF8Encoding.cs
Origine:
UTF8Encoding.cs
Origine:
UTF8Encoding.cs

Calcola il numero di byte prodotti dalla codifica dei caratteri nell'oggetto String specificato.

public:
 override int GetByteCount(System::String ^ chars);
public override int GetByteCount (string chars);
override this.GetByteCount : string -> int
Public Overrides Function GetByteCount (chars As String) As Integer

Parametri

chars
String

Oggetto String contenente il set di caratteri da codificare.

Restituisce

Numero di byte prodotti dalla codifica dei caratteri specificati.

Eccezioni

chars è null.

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

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

Si è verificato un fallback (per altre informazioni, vedere Codifica dei caratteri in .NET)

-e-

EncoderFallback è impostato su EncoderExceptionFallback.

Esempio

Nell'esempio seguente vengono chiamati i GetMaxByteCount metodi e GetByteCount(String) per calcolare il numero massimo e effettivo di byte necessari per codificare una stringa. Visualizza anche il numero effettivo di byte necessari per archiviare un flusso di byte con un contrassegno di ordine byte.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        String chars = "UTF8 Encoding Example";
        Encoding utf8 = Encoding.UTF8;

        Console.WriteLine("Bytes needed to encode '{0}':", chars);
        Console.WriteLine("   Maximum:         {0}",
                          utf8.GetMaxByteCount(chars.Length));
        Console.WriteLine("   Actual:          {0}",
                          utf8.GetByteCount(chars));
        Console.WriteLine("   Actual with BOM: {0}",
                          utf8.GetByteCount(chars) + utf8.GetPreamble().Length);
    }
}
// The example displays the following output:
//       Bytes needed to encode 'UTF8 Encoding Example':
//          Maximum:         66
//          Actual:          21
//          Actual with BOM: 24
Imports System.Text

Module Example
    Public Sub Main()
        Dim chars As String = "UTF8 Encoding Example"
        Dim utf8 As Encoding = Encoding.UTF8

        Console.WriteLine("Bytes needed to encode '{0}':", chars)
        Console.WriteLine("   Maximum:         {0}",
                          utf8.GetMaxByteCount(chars.Length))
        Console.WriteLine("   Actual:          {0}",
                          utf8.GetByteCount(chars))
        Console.WriteLine("   Actual with BOM: {0}",
                          utf8.GetByteCount(chars) + utf8.GetPreamble().Length)
    End Sub
End Module
' The example displays the following output:
'       Bytes needed to encode 'UTF8 Encoding Example':
'          Maximum:         66
'          Actual:          21
'          Actual with BOM: 24

Commenti

Per calcolare le dimensioni esatte della matrice necessarie per GetBytes archiviare i byte risultanti, si chiama il GetByteCount metodo . Per calcolare le dimensioni massime della matrice, si chiama il GetMaxByteCount metodo . Il GetByteCount metodo in genere alloca meno memoria, mentre il GetMaxByteCount metodo esegue in genere più velocemente.

Con il rilevamento degli errori, una sequenza non valida causa la generazione di un'eccezione ArgumentException . Senza rilevamento errori, le sequenze non valide vengono ignorate e non viene generata alcuna eccezione.

Per assicurarsi che i byte codificati vengano decodificati correttamente quando vengono salvati come file o come flusso, è possibile prefisso un flusso di byte codificati con un preambolo. L'inserimento del 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 nel preambolo non si riflette nel valore restituito dal GetByteCount metodo.

Vedi anche

Si applica a

GetByteCount(Char*, Int32)

Origine:
UTF8Encoding.cs
Origine:
UTF8Encoding.cs
Origine:
UTF8Encoding.cs

Importante

Questa API non è conforme a CLS.

Calcola il numero di byte prodotti dalla codifica di un set di caratteri a partire dal puntatore ai caratteri specificato.

public:
 override int GetByteCount(char* chars, int count);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetByteCount (char* chars, int count);
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetByteCount : nativeptr<char> * int -> int

Parametri

chars
Char*

Puntatore al primo carattere da codificare.

count
Int32

Numero di caratteri da codificare.

Restituisce

Numero di byte prodotti dalla codifica dei caratteri specificati.

Attributi

Eccezioni

chars è null.

count è minore di zero.

-oppure-

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

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

Si è verificato un fallback. Per una spiegazione completa, vedere Codifica dei caratteri in .NET Framework.

-e-

EncoderFallback è impostato su EncoderExceptionFallback.

Commenti

Per calcolare le dimensioni esatte della matrice richieste dal GetBytes metodo per archiviare i byte risultanti, si chiama il GetByteCount metodo . Per calcolare le dimensioni massime della matrice, si chiama il GetMaxByteCount metodo . Il GetByteCount metodo in genere alloca meno memoria, mentre il GetMaxByteCount metodo esegue in genere più velocemente.

Con il rilevamento degli errori, una sequenza non valida causa la generazione di un'eccezione ArgumentException . Senza rilevamento errori, le sequenze non valide vengono ignorate e non viene generata alcuna eccezione.

Per assicurarsi che i byte codificati vengano decodificati correttamente quando vengono salvati come file o come flusso, è possibile prefisso un flusso di byte codificati con un preambolo. L'inserimento del 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 nel preambolo non si riflette nel valore restituito dal GetByteCount metodo.

Vedi anche

Si applica a

GetByteCount(Char[], Int32, Int32)

Origine:
UTF8Encoding.cs
Origine:
UTF8Encoding.cs
Origine:
UTF8Encoding.cs

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

public:
 override int GetByteCount(cli::array <char> ^ chars, int index, int count);
public override int GetByteCount (char[] chars, int index, int count);
override this.GetByteCount : char[] * int * int -> int
Public Overrides Function GetByteCount (chars As Char(), index As Integer, count As Integer) As Integer

Parametri

chars
Char[]

Matrice di caratteri contenente il set di caratteri da codificare.

index
Int32

Indice del primo carattere da codificare.

count
Int32

Numero di caratteri da codificare.

Restituisce

Numero di byte prodotti dalla codifica dei caratteri specificati.

Eccezioni

chars è null.

index o count è minore di zero.

-oppure-

index e count non identificano un intervallo valido in chars.

-oppure-

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

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

Si è verificato un fallback (per altre informazioni, vedere Codifica dei caratteri in .NET)

-e-

La proprietà EncoderFallback è impostata su EncoderExceptionFallback.

Esempio

Nell'esempio seguente viene popolata una matrice con caratteri maiuscoli e minuscoli latini e chiama il metodo per determinare il GetByteCount(Char[], Int32, Int32) numero di byte necessari per codificare i caratteri minuscoli latini. Visualizza quindi queste informazioni insieme al numero totale di byte necessari se viene aggiunto un contrassegno di ordine byte. Confronta questo numero con il valore restituito dal 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
Imports System.Text

Module Example
   Public Sub Main()
      Dim uppercaseStart As Integer = &h0041
      Dim uppercaseEnd As Integer = &h005a
      Dim lowercaseStart As Integer = &h0061
      Dim lowercaseEnd As Integer = &h007a
      ' Instantiate a UTF8 encoding object with BOM support.
      Dim utf8 As New UTF8Encoding(True)
      
      ' Populate array with characters.
      Dim chars(lowercaseEnd - lowercaseStart + uppercaseEnd - uppercaseStart + 1) As Char
      Dim index As Integer = 0
      For ctr As Integer = uppercaseStart To uppercaseEnd
         chars(index) = ChrW(ctr)
         index += 1
      Next
      For ctr As Integer = lowercaseStart To lowercaseEnd
         chars(index) = ChrW(ctr)
         index += 1
      Next

      ' 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)
   End Sub
End Module
' The example displays the following output:
'       Bytes needed for lowercase Latin characters:
'          Maximum:            81
'          Actual:             26
'          Actual with BOM:    29

Commenti

Per calcolare le dimensioni esatte della matrice necessarie per GetBytes archiviare i byte risultanti, si chiama il metodo uses GetByteCount . Per calcolare le dimensioni massime della matrice, si chiama il GetMaxByteCount metodo . Il GetByteCount metodo in genere alloca meno memoria, mentre il GetMaxByteCount metodo esegue in genere più velocemente.

Con il rilevamento degli errori, una sequenza non valida causa la generazione di un'eccezione ArgumentException . Senza rilevamento errori, le sequenze non valide vengono ignorate e non viene generata alcuna eccezione.

Per assicurarsi che i byte codificati vengano decodificati correttamente quando vengono salvati come file o come flusso, è possibile prefisso un flusso di byte codificati con un preambolo. L'inserimento del 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 nel preambolo non si riflette nel valore restituito dal GetByteCount metodo.

Vedi anche

Si applica a