UTF8Encoding.GetByteCount Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Berechnet die Anzahl der Bytes, die beim Codieren der Zeichen erzeugt wird.
Überlädt
GetByteCount(ReadOnlySpan<Char>) |
Berechnet die Anzahl von Bytes, die durch das Codieren des angegebenen Zeichenbereichs erzeugt werden. |
GetByteCount(String) |
Berechnet die Anzahl der Bytes, die durch das Codieren der Zeichen in der angegebenen String-Klasse erzeugt werden. |
GetByteCount(Char*, Int32) |
Berechnet die Anzahl der Bytes, die beim Codieren der Zeichen ab dem angegebenen Zeichenzeiger erzeugt werden. |
GetByteCount(Char[], Int32, Int32) |
Berechnet die Anzahl der Bytes, die beim Codieren der Zeichen aus dem angegebenen Zeichenarray erzeugt werden. |
GetByteCount(ReadOnlySpan<Char>)
- Quelle:
- UTF8Encoding.cs
- Quelle:
- UTF8Encoding.cs
- Quelle:
- UTF8Encoding.cs
Berechnet die Anzahl von Bytes, die durch das Codieren des angegebenen Zeichenbereichs erzeugt werden.
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
Parameter
- chars
- ReadOnlySpan<Char>
Der Bereich, der die zu codierenden Zeichen enthält.
Gibt zurück
Die Anzahl von Bytes, die beim Codieren des angegebenen Zeichenbereichs erzeugt werden.
Ausnahmen
Die Fehlererkennung ist aktiviert, und chars
enthält eine ungültige Folge von Zeichen.
Ein Fallback ist aufgetreten (weitere Informationen finden Sie unter Zeichencodierung in .NET).
- und -
Für EncoderFallback ist EncoderExceptionFallback festgelegt.
Hinweise
Um die genaue Größe zu berechnen, die zum GetBytes Speichern der resultierenden Bytes erforderlich ist, rufen Sie die -Methode auf GetByteCount . Um die maximale Größe zu berechnen, rufen Sie die -Methode auf GetMaxByteCount . Die GetByteCount Methode weist in der Regel weniger Arbeitsspeicher zu, während die GetMaxByteCount Methode im Allgemeinen schneller ausgeführt wird.
Bei der Fehlererkennung bewirkt eine ungültige Sequenz, dass diese Methode eine ArgumentException Ausnahme auslöst. Ohne Fehlererkennung werden ungültige Sequenzen ignoriert, und es wird keine Ausnahme ausgelöst.
Um sicherzustellen, dass die codierten Bytes ordnungsgemäß decodiert werden, wenn sie als Datei oder als Stream gespeichert werden, können Sie einem Datenstrom codierter Bytes eine Präambel voran stellen. Das Einfügen der Präambel am Anfang eines Bytedatenstroms (z. B. am Anfang einer Reihe von Bytes, die in eine Datei geschrieben werden sollen) liegt in der Verantwortung des Entwicklers, und die Anzahl der Bytes in der Präambel wird nicht im von der GetByteCount -Methode zurückgegebenen Wert widergespiegelt.
Gilt für:
GetByteCount(String)
- Quelle:
- UTF8Encoding.cs
- Quelle:
- UTF8Encoding.cs
- Quelle:
- UTF8Encoding.cs
Berechnet die Anzahl der Bytes, die durch das Codieren der Zeichen in der angegebenen String-Klasse erzeugt werden.
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
Parameter
Gibt zurück
Die Anzahl der Bytes, die beim Codieren der angegebenen Zeichen erzeugt werden.
Ausnahmen
chars
ist null
.
Die sich ergebende Anzahl von Bytes ist höher als die maximale Anzahl, die als ganze Zahl zurückgegeben werden kann.
Die Fehlererkennung ist aktiviert, und chars
enthält eine ungültige Folge von Zeichen.
Es ist ein Fallback aufgetreten (weitere Informationen finden Sie unter Zeichencodierung in .NET).
- und -
Für EncoderFallback ist EncoderExceptionFallback festgelegt.
Beispiele
Im folgenden Beispiel werden die GetMaxByteCount Methoden und GetByteCount(String) aufgerufen, um die maximale und tatsächliche Anzahl von Bytes zu berechnen, die zum Codieren einer Zeichenfolge erforderlich sind. Außerdem wird die tatsächliche Anzahl von Bytes angezeigt, die zum Speichern eines Bytedatenstroms mit einer Bytereihenfolgenmarkierung erforderlich sind.
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
Hinweise
Um die genaue Arraygröße zu berechnen, die zum GetBytes Speichern der resultierenden Bytes erforderlich ist, rufen Sie die -Methode auf GetByteCount . Um die maximale Arraygröße zu berechnen, rufen Sie die -Methode auf GetMaxByteCount . Die GetByteCount Methode weist in der Regel weniger Arbeitsspeicher zu, während die GetMaxByteCount Methode im Allgemeinen schneller ausgeführt wird.
Bei der Fehlererkennung bewirkt eine ungültige Sequenz, dass diese Methode eine ArgumentException Ausnahme auslöst. Ohne Fehlererkennung werden ungültige Sequenzen ignoriert, und es wird keine Ausnahme ausgelöst.
Um sicherzustellen, dass die codierten Bytes ordnungsgemäß decodiert werden, wenn sie als Datei oder als Stream gespeichert werden, können Sie einem Datenstrom codierter Bytes eine Präambel voran stellen. Das Einfügen der Präambel am Anfang eines Bytedatenstroms (z. B. am Anfang einer Reihe von Bytes, die in eine Datei geschrieben werden sollen) liegt in der Verantwortung des Entwicklers, und die Anzahl der Bytes in der Präambel wird nicht im von der GetByteCount -Methode zurückgegebenen Wert widergespiegelt.
Weitere Informationen
Gilt für:
GetByteCount(Char*, Int32)
- Quelle:
- UTF8Encoding.cs
- Quelle:
- UTF8Encoding.cs
- Quelle:
- UTF8Encoding.cs
Wichtig
Diese API ist nicht CLS-kompatibel.
Berechnet die Anzahl der Bytes, die beim Codieren der Zeichen ab dem angegebenen Zeichenzeiger erzeugt werden.
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
Parameter
- chars
- Char*
Ein Zeiger auf das erste zu codierende Zeichen.
- count
- Int32
Die Anzahl der zu codierenden Zeichen.
Gibt zurück
Die Anzahl der Bytes, die beim Codieren der angegebenen Zeichen erzeugt werden.
- Attribute
Ausnahmen
chars
ist null
.
count
ist kleiner als Null.
- oder -
Die sich ergebende Anzahl von Bytes ist höher als die maximale Anzahl, die als ganze Zahl zurückgegeben werden kann.
Die Fehlererkennung ist aktiviert, und chars
enthält eine ungültige Folge von Zeichen.
Ein Fallback ist aufgetreten (eine ausführliche Erläuterung finden Sie unter Zeichencodierung in .NET)
- und -
Für EncoderFallback ist EncoderExceptionFallback festgelegt.
Hinweise
Um die genaue Arraygröße zu berechnen, die für die GetBytes Methode zum Speichern der resultierenden Bytes erforderlich ist, rufen Sie die -Methode auf GetByteCount . Um die maximale Arraygröße zu berechnen, rufen Sie die -Methode auf GetMaxByteCount . Die GetByteCount Methode weist in der Regel weniger Arbeitsspeicher zu, während die GetMaxByteCount Methode im Allgemeinen schneller ausgeführt wird.
Bei der Fehlererkennung bewirkt eine ungültige Sequenz, dass diese Methode eine ArgumentException Ausnahme auslöst. Ohne Fehlererkennung werden ungültige Sequenzen ignoriert, und es wird keine Ausnahme ausgelöst.
Um sicherzustellen, dass die codierten Bytes ordnungsgemäß decodiert werden, wenn sie als Datei oder als Stream gespeichert werden, können Sie einem Datenstrom codierter Bytes eine Präambel voran stellen. Das Einfügen der Präambel am Anfang eines Bytedatenstroms (z. B. am Anfang einer Reihe von Bytes, die in eine Datei geschrieben werden sollen) liegt in der Verantwortung des Entwicklers, und die Anzahl der Bytes in der Präambel wird nicht im von der GetByteCount -Methode zurückgegebenen Wert widergespiegelt.
Weitere Informationen
Gilt für:
GetByteCount(Char[], Int32, Int32)
- Quelle:
- UTF8Encoding.cs
- Quelle:
- UTF8Encoding.cs
- Quelle:
- UTF8Encoding.cs
Berechnet die Anzahl der Bytes, die beim Codieren der Zeichen aus dem angegebenen Zeichenarray erzeugt werden.
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
Parameter
- chars
- Char[]
Das Zeichenarray, das die zu codierenden Zeichen enthält.
- index
- Int32
Der Index des ersten zu codierenden Zeichens.
- count
- Int32
Die Anzahl der zu codierenden Zeichen.
Gibt zurück
Die Anzahl der Bytes, die beim Codieren der angegebenen Zeichen erzeugt werden.
Ausnahmen
chars
ist null
.
index
oder count
ist kleiner als 0.
- oder -
index
und count
geben keinen gültigen Bereich in chars
an.
- oder -
Die sich ergebende Anzahl von Bytes ist höher als die maximale Anzahl, die als ganze Zahl zurückgegeben werden kann.
Die Fehlererkennung ist aktiviert, und chars
enthält eine ungültige Folge von Zeichen.
Es ist ein Fallback aufgetreten (weitere Informationen finden Sie unter Zeichencodierung in .NET).
- und -
Die EncoderFallback-Eigenschaft ist auf EncoderExceptionFallback festgelegt.
Beispiele
Im folgenden Beispiel wird ein Array mit lateinischen Groß- und Kleinbuchstaben aufgefüllt und die -Methode aufgerufen, um die GetByteCount(Char[], Int32, Int32) Anzahl von Bytes zu bestimmen, die zum Codieren der lateinischen Kleinbuchstaben erforderlich sind. Anschließend werden diese Informationen zusammen mit der Gesamtanzahl der Bytes angezeigt, die benötigt werden, wenn eine Bytereihenfolgenmarke hinzugefügt wird. Sie vergleicht diese Zahl mit dem von der -Methode zurückgegebenen Wert, der GetMaxByteCount die maximale Anzahl von Bytes angibt, die zum Codieren der lateinischen Kleinbuchstaben erforderlich sind.
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
Hinweise
Um die genaue Arraygröße zu berechnen, die für GetBytes das Speichern der resultierenden Bytes erforderlich ist, rufen Sie die uses-Methode auf GetByteCount . Um die maximale Arraygröße zu berechnen, rufen Sie die -Methode auf GetMaxByteCount . Die GetByteCount Methode weist in der Regel weniger Arbeitsspeicher zu, während die GetMaxByteCount Methode im Allgemeinen schneller ausgeführt wird.
Bei der Fehlererkennung bewirkt eine ungültige Sequenz, dass diese Methode eine ArgumentException Ausnahme auslöst. Ohne Fehlererkennung werden ungültige Sequenzen ignoriert, und es wird keine Ausnahme ausgelöst.
Um sicherzustellen, dass die codierten Bytes ordnungsgemäß decodiert werden, wenn sie als Datei oder als Stream gespeichert werden, können Sie einem Datenstrom codierter Bytes eine Präambel voran stellen. Das Einfügen der Präambel am Anfang eines Bytedatenstroms (z. B. am Anfang einer Reihe von Bytes, die in eine Datei geschrieben werden sollen) liegt in der Verantwortung des Entwicklers, und die Anzahl der Bytes in der Präambel wird nicht im von der GetByteCount -Methode zurückgegebenen Wert widergespiegelt.