UnicodeEncoding.GetByteCount Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Calcola il numero di byte prodotti dalla codifica di un set di caratteri.
Overload
GetByteCount(String) |
Calcola il numero di byte prodotti dalla codifica dei caratteri nella stringa specificata. |
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(String)
- Origine:
- UnicodeEncoding.cs
- Origine:
- UnicodeEncoding.cs
- Origine:
- UnicodeEncoding.cs
Calcola il numero di byte prodotti dalla codifica dei caratteri nella stringa specificata.
public:
override int GetByteCount(System::String ^ s);
public override int GetByteCount (string s);
override this.GetByteCount : string -> int
Public Overrides Function GetByteCount (s As String) As Integer
Parametri
- s
- String
Stringa contenente il set di caratteri da codificare.
Restituisce
Numero di byte prodotti dalla codifica dei caratteri specificati.
Eccezioni
s
è null
.
Il numero di byte ottenuto è maggiore del numero massimo che può essere restituito come valore integer.
Il rilevamento errori è abilitato e s
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 di byte.
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
String chars = "UTF-16 Encoding Example";
Encoding unicode = Encoding.Unicode;
Console.WriteLine("Bytes needed to encode '{0}':", chars);
Console.WriteLine(" Maximum: {0}",
unicode.GetMaxByteCount(chars.Length));
Console.WriteLine(" Actual: {0}",
unicode.GetByteCount(chars));
Console.WriteLine(" Actual with BOM: {0}",
unicode.GetByteCount(chars) + unicode.GetPreamble().Length);
}
}
// The example displays the following output:
// Bytes needed to encode 'UTF-16 Encoding Example':
// Maximum: 48
// Actual: 46
// Actual with BOM: 48
Imports System.Text
Module Example
Public Sub Main()
Dim chars As String = "UTF-16 Encoding Example"
Dim unicode As Encoding = Encoding.Unicode
Console.WriteLine("Bytes needed to encode '{0}':", chars)
Console.WriteLine(" Maximum: {0}",
unicode.GetMaxByteCount(chars.Length))
Console.WriteLine(" Actual: {0}",
unicode.GetByteCount(chars))
Console.WriteLine(" Actual with BOM: {0}",
unicode.GetByteCount(chars) + unicode.GetPreamble().Length)
End Sub
End Module
' The example displays the following output:
' Bytes needed to encode 'UTF-16 Encoding Example':
' Maximum: 48
' Actual: 46
' Actual with BOM: 48
Commenti
Per calcolare la dimensione esatta della matrice richiesta da GetBytes per archiviare i byte risultanti, chiamare il GetByteCount metodo . Per calcolare le dimensioni massime della matrice, chiamare il GetMaxByteCount metodo . Il GetByteCount metodo in genere alloca meno memoria, mentre il GetMaxByteCount metodo viene in genere eseguito più velocemente.
Con il rilevamento degli errori, una sequenza non valida fa sì che questo metodo generi un'eccezione ArgumentException. Senza il rilevamento degli errori, le sequenze non valide vengono ignorate e non viene generata alcuna eccezione.
Importante
Per assicurarsi che i byte codificati vengano decodificati correttamente quando vengono salvati come file o come flusso, è possibile anteporre 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(String) metodo .
Vedi anche
Si applica a
GetByteCount(Char*, Int32)
- Origine:
- UnicodeEncoding.cs
- Origine:
- UnicodeEncoding.cs
- Origine:
- UnicodeEncoding.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)]
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)]
[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)>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
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 è attivato e chars
contiene una sequenza di caratteri non valida.
Si è verificato un fallback (per altre informazioni, vedere Codifica dei caratteri in .NET)
-e-
EncoderFallback è impostato su EncoderExceptionFallback.
Commenti
Per calcolare la dimensione esatta della matrice che GetBytes richiede di archiviare i byte risultanti, chiamare il GetByteCount metodo . Per calcolare le dimensioni massime della matrice, chiamare il GetMaxByteCount metodo . Il GetByteCount metodo in genere alloca meno memoria, mentre il GetMaxByteCount metodo viene in genere eseguito più velocemente.
Con il rilevamento degli errori, una sequenza non valida fa sì che questo metodo generi un'eccezione ArgumentException. Senza il rilevamento degli errori, le sequenze non valide vengono ignorate e non viene generata alcuna eccezione.
Importante
Per assicurarsi che i byte codificati vengano decodificati correttamente quando vengono salvati come file o come flusso, è possibile anteporre 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:
- UnicodeEncoding.cs
- Origine:
- UnicodeEncoding.cs
- Origine:
- UnicodeEncoding.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
(Nothing
).
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-
EncoderFallback è impostato su EncoderExceptionFallback.
Esempio
Nell'esempio seguente viene popolata una matrice con caratteri maiuscoli e minuscoli latini e viene chiamato il GetByteCount(Char[], Int32, Int32) metodo per determinare il numero di byte necessari per codificare i caratteri minuscoli latini. Vengono quindi visualizzate queste informazioni insieme al numero totale di byte necessari se viene aggiunto un contrassegno di ordine di 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. Nell'esempio seguente viene popolata una matrice con una combinazione di caratteri greci e cirillici e viene chiamato il GetByteCount(Char[], Int32, Int32) metodo per determinare il numero di byte necessari per codificare i caratteri cirillici. Vengono quindi visualizzate queste informazioni insieme al numero totale di byte necessari se viene aggiunto un contrassegno di ordine di byte. Confronta questo numero con il valore restituito dal GetMaxByteCount metodo , che indica il numero massimo di byte necessari per codificare i caratteri cirillico.
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 unicode = Encoding.Unicode;
// 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}",
unicode.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1));
Console.WriteLine(" Actual: {0,5:N0}",
unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
lowercaseEnd - lowercaseStart + 1));
Console.WriteLine(" Actual with BOM: {0,5:N0}",
unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
lowercaseEnd - lowercaseStart + 1) +
unicode.GetPreamble().Length);
}
}
// The example displays the following output:
// Bytes needed for lowercase Latin characters:
// Maximum: 54
// Actual: 52
// Actual with BOM: 54
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 unicode As Encoding = Encoding.Unicode
' 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}",
unicode.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1))
Console.WriteLine(" Actual: {0,5:N0}",
unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
lowercaseEnd - lowercaseStart + 1))
Console.WriteLine(" Actual with BOM: {0,5:N0}",
unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
lowercaseEnd - lowercaseStart + 1) +
unicode.GetPreamble().Length)
End Sub
End Module
' The example displays the following output:
' Bytes needed for lowercase Latin characters:
' Maximum: 54
' Actual: 52
' Actual with BOM: 54
Commenti
Per calcolare la dimensione esatta della matrice richiesta da GetBytes per archiviare i byte risultanti, l'applicazione usa GetByteCount. Per calcolare le dimensioni massime della matrice, chiamare il GetMaxByteCount metodo . Il GetByteCount metodo in genere alloca meno memoria, mentre il GetMaxByteCount metodo viene in genere eseguito più velocemente.
Se il rilevamento degli errori è abilitato, una sequenza non valida fa sì che questo metodo generi un'eccezione ArgumentException. Senza il rilevamento degli 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 anteporre 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(Char[], Int32, Int32) metodo .