UTF8Encoding.GetByteCount Methode

Definition

Berechnet die Anzahl der Bytes, die beim Codieren der Zeichen erzeugt wird.Calculates the number of bytes produced by encoding a set of characters.

Überlädt

GetByteCount(ReadOnlySpan<Char>)

Berechnet die Anzahl von Bytes, die durch das Codieren des angegebenen Zeichenbereichs erzeugt werden.Calculates the number of bytes produced by encoding the specified character span.

GetByteCount(String)

Berechnet die Anzahl der Bytes, die durch das Codieren der Zeichen in der angegebenen String-Klasse erzeugt werden.Calculates the number of bytes produced by encoding the characters in the specified String.

GetByteCount(Char*, Int32)

Berechnet die Anzahl der Bytes, die beim Codieren der Zeichen ab dem angegebenen Zeichenzeiger erzeugt werden.Calculates the number of bytes produced by encoding a set of characters starting at the specified character pointer.

GetByteCount(Char[], Int32, Int32)

Berechnet die Anzahl der Bytes, die beim Codieren der Zeichen aus dem angegebenen Zeichenarray erzeugt werden.Calculates the number of bytes produced by encoding a set of characters from the specified character array.

GetByteCount(ReadOnlySpan<Char>)

Berechnet die Anzahl von Bytes, die durch das Codieren des angegebenen Zeichenbereichs erzeugt werden.Calculates the number of bytes produced by encoding the specified character span.

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.The span that contains the set of characters to encode.

Gibt zurück

Die Anzahl von Bytes, die beim Codieren des angegebenen Zeichenbereichs erzeugt werden.The number of bytes produced by encoding the specified character span.

Ausnahmen

Die Fehlererkennung ist aktiviert, und chars enthält eine ungültige Folge von Zeichen.Error detection is enabled, and chars contains an invalid sequence of characters.

Ein Fallback ist aufgetreten (eine ausführliche Erläuterung finden Sie unter Zeichencodierung in .NET)A fallback occurred (see Character Encoding in .NET for complete explanation).

-und--and- Für EncoderFallback ist EncoderExceptionFallback festgelegt.EncoderFallback is set to EncoderExceptionFallback.

Hinweise

Um die genaue Größe zu berechnen, die GetBytes zum Speichern der resultierenden Bytes benötigt, wird die GetByteCount-Methode aufgerufen.To calculate the exact size required by GetBytes to store the resulting bytes, you call the GetByteCount method. Um die maximale Größe zu berechnen, wird die GetMaxByteCount-Methode aufgerufen.To calculate the maximum size, you call the GetMaxByteCount method. Die GetByteCount-Methode weist im Allgemeinen weniger Arbeitsspeicher zu, während die GetMaxByteCount-Methode im Allgemeinen schneller ausgeführt wird.The GetByteCount method generally allocates less memory, while the GetMaxByteCount method generally executes faster.

Bei der Fehlererkennung bewirkt eine ungültige Sequenz, dass diese Methode eine ArgumentException Ausnahme auslöst.With error detection, an invalid sequence causes this method to throw an ArgumentException exception. Ohne Fehlererkennung werden ungültige Sequenzen ignoriert, und es wird keine Ausnahme ausgelöst.Without error detection, invalid sequences are ignored, and no exception is thrown.

Um sicherzustellen, dass die codierten Bytes ordnungsgemäß decodiert werden, wenn Sie als Datei oder als Stream gespeichert werden, können Sie einem Stream codierter Bytes eine Präambel als Präfix voranstellen.To ensure that the encoded bytes are decoded properly when they are saved as a file or as a stream, you can prefix a stream of encoded bytes with a preamble. Das Einfügen der Präambel am Anfang eines Bytestreams (z. b. am Anfang einer Bytefolge, die in eine Datei geschrieben werden soll) ist die Verantwortung des Entwicklers, und die Anzahl der Bytes in der Präambel wird nicht in dem Wert widergespiegelt, der von der GetByteCount-Methode zurückgegeben wird.Inserting the preamble at the beginning of a byte stream (such as at the beginning of a series of bytes to be written to a file) is the developer's responsibility, and the number of bytes in the preamble is not reflected in the value returned by the GetByteCount method.

GetByteCount(String)

Berechnet die Anzahl der Bytes, die durch das Codieren der Zeichen in der angegebenen String-Klasse erzeugt werden.Calculates the number of bytes produced by encoding the characters in the specified String.

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

chars
String

Die String-Klasse mit den zu codierenden Zeichen.The String containing the set of characters to encode.

Gibt zurück

Die Anzahl der Bytes, die beim Codieren der angegebenen Zeichen erzeugt werden.The number of bytes produced by encoding the specified characters.

Ausnahmen

chars ist null.chars is null.

Die daraus resultierende Byteanzahl ist größer als die maximale Anzahl, die als ganze Zahl zurückgegeben werden kann.The resulting number of bytes is greater than the maximum number that can be returned as an integer.

Die Fehlererkennung ist aktiviert, und chars enthält eine ungültige Folge von Zeichen.Error detection is enabled, and chars contains an invalid sequence of characters.

Es ist ein Fallback aufgetreten (weitere Informationen finden Sie unter Zeichencodierung in .NET).A fallback occurred (for more information, see Character Encoding in .NET) -und--and- Für EncoderFallback ist EncoderExceptionFallback festgelegt.EncoderFallback is set to EncoderExceptionFallback.

Beispiele

Im folgenden Beispiel werden die Methoden GetMaxByteCount und GetByteCount(String) aufgerufen, um die maximale und tatsächliche Anzahl von Bytes zu berechnen, die zum Codieren einer Zeichenfolge erforderlich sind.The following example calls the GetMaxByteCount and GetByteCount(String) methods to calculate the maximum and actual number of bytes required to encode a string. Es zeigt auch die tatsächliche Anzahl von Bytes an, die zum Speichern eines Bytestreams mit einer Byte Reihenfolge-Marke erforderlich ist.It also displays the actual number of bytes required to store a byte stream with a byte order mark.

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 Array Größe zu berechnen, die GetBytes zum Speichern der resultierenden Bytes benötigt, wird die GetByteCount-Methode aufgerufen.To calculate the exact array size required by GetBytes to store the resulting bytes, you call the GetByteCount method. Um die maximale Array Größe zu berechnen, wird die GetMaxByteCount-Methode aufgerufen.To calculate the maximum array size, you call the GetMaxByteCount method. Die GetByteCount-Methode weist im Allgemeinen weniger Arbeitsspeicher zu, während die GetMaxByteCount-Methode im Allgemeinen schneller ausgeführt wird.The GetByteCount method generally allocates less memory, while the GetMaxByteCount method generally executes faster.

Bei der Fehlererkennung bewirkt eine ungültige Sequenz, dass diese Methode eine ArgumentException Ausnahme auslöst.With error detection, an invalid sequence causes this method to throw an ArgumentException exception. Ohne Fehlererkennung werden ungültige Sequenzen ignoriert, und es wird keine Ausnahme ausgelöst.Without error detection, invalid sequences are ignored, and no exception is thrown.

Um sicherzustellen, dass die codierten Bytes ordnungsgemäß decodiert werden, wenn Sie als Datei oder als Stream gespeichert werden, können Sie einem Stream codierter Bytes eine Präambel als Präfix voranstellen.To ensure that the encoded bytes are decoded properly when they are saved as a file or as a stream, you can prefix a stream of encoded bytes with a preamble. Das Einfügen der Präambel am Anfang eines Bytestreams (z. b. am Anfang einer Bytefolge, die in eine Datei geschrieben werden soll) ist die Verantwortung des Entwicklers, und die Anzahl der Bytes in der Präambel wird nicht in dem Wert widergespiegelt, der von der GetByteCount-Methode zurückgegeben wird.Inserting the preamble at the beginning of a byte stream (such as at the beginning of a series of bytes to be written to a file) is the developer's responsibility, and the number of bytes in the preamble is not reflected in the value returned by the GetByteCount method.

Siehe auch

GetByteCount(Char*, Int32)

Wichtig

Diese API ist nicht CLS-kompatibel.

Berechnet die Anzahl der Bytes, die beim Codieren der Zeichen ab dem angegebenen Zeichenzeiger erzeugt werden.Calculates the number of bytes produced by encoding a set of characters starting at the specified character pointer.

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

Parameter

chars
Char*

Ein Zeiger auf das erste zu codierende Zeichen.A pointer to the first character to encode.

count
Int32

Die Anzahl der zu codierenden Zeichen.The number of characters to encode.

Gibt zurück

Die Anzahl der Bytes, die beim Codieren der angegebenen Zeichen erzeugt werden.The number of bytes produced by encoding the specified characters.

Attribute

Ausnahmen

chars ist null.chars is null.

count ist kleiner als Null.count is less than zero.

- oder --or- Die daraus resultierende Byteanzahl ist größer als die maximale Anzahl, die als ganze Zahl zurückgegeben werden kann.The resulting number of bytes is greater than the maximum number that can be returned as an integer.

Die Fehlererkennung ist aktiviert, und chars enthält eine ungültige Folge von Zeichen.Error detection is enabled, and chars contains an invalid sequence of characters.

Ein Fallback ist aufgetreten (eine ausführliche Erläuterung finden Sie unter Zeichencodierung in .NET)A fallback occurred (see Character Encoding in .NET for a complete explanation).

-und--and- Für EncoderFallback ist EncoderExceptionFallback festgelegt.EncoderFallback is set to EncoderExceptionFallback.

Hinweise

Um die genaue Array Größe zu berechnen, die für die GetBytes Methode zum Speichern der resultierenden Bytes erforderlich ist, wird die GetByteCount-Methode aufgerufen.To calculate the exact array size required by the GetBytes method to store the resulting bytes, you call the GetByteCount method. Um die maximale Array Größe zu berechnen, wird die GetMaxByteCount-Methode aufgerufen.To calculate the maximum array size, you call the GetMaxByteCount method. Die GetByteCount-Methode weist im Allgemeinen weniger Arbeitsspeicher zu, während die GetMaxByteCount-Methode im Allgemeinen schneller ausgeführt wird.The GetByteCount method generally allocates less memory, while the GetMaxByteCount method generally executes faster.

Bei der Fehlererkennung bewirkt eine ungültige Sequenz, dass diese Methode eine ArgumentException Ausnahme auslöst.With error detection, an invalid sequence causes this method to throw an ArgumentException exception. Ohne Fehlererkennung werden ungültige Sequenzen ignoriert, und es wird keine Ausnahme ausgelöst.Without error detection, invalid sequences are ignored, and no exception is thrown.

Um sicherzustellen, dass die codierten Bytes ordnungsgemäß decodiert werden, wenn Sie als Datei oder als Stream gespeichert werden, können Sie einem Stream codierter Bytes eine Präambel als Präfix voranstellen.To ensure that the encoded bytes are decoded properly when they are saved as a file or as a stream, you can prefix a stream of encoded bytes with a preamble. Das Einfügen der Präambel am Anfang eines Bytestreams (z. b. am Anfang einer Bytefolge, die in eine Datei geschrieben werden soll) ist die Verantwortung des Entwicklers, und die Anzahl der Bytes in der Präambel wird nicht in dem Wert widergespiegelt, der von der GetByteCount-Methode zurückgegeben wird.Inserting the preamble at the beginning of a byte stream (such as at the beginning of a series of bytes to be written to a file) is the developer's responsibility, and the number of bytes in the preamble is not reflected in the value returned by the GetByteCount method.

Sicherheit

SecurityCriticalAttribute
Erfordert volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer.Requires full trust for the immediate caller. Dieser Member kann nicht von teilweise vertrauenswürdigem oder transparentem Code verwendet werden.This member cannot be used by partially trusted or transparent code.

Siehe auch

GetByteCount(Char[], Int32, Int32)

Berechnet die Anzahl der Bytes, die beim Codieren der Zeichen aus dem angegebenen Zeichenarray erzeugt werden.Calculates the number of bytes produced by encoding a set of characters from the specified character array.

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.The character array containing the set of characters to encode.

index
Int32

Der Index des ersten zu codierenden Zeichens.The index of the first character to encode.

count
Int32

Die Anzahl der zu codierenden Zeichen.The number of characters to encode.

Gibt zurück

Die Anzahl der Bytes, die beim Codieren der angegebenen Zeichen erzeugt werden.The number of bytes produced by encoding the specified characters.

Ausnahmen

chars ist null.chars is null.

index oder count ist kleiner als 0.index or count is less than zero.

- oder --or- index und count geben keinen gültigen Bereich in chars an.index and count do not denote a valid range in chars.

- oder --or- Die daraus resultierende Byteanzahl ist größer als die maximale Anzahl, die als ganze Zahl zurückgegeben werden kann.The resulting number of bytes is greater than the maximum number that can be returned as an integer.

Die Fehlererkennung ist aktiviert, und chars enthält eine ungültige Folge von Zeichen.Error detection is enabled, and chars contains an invalid sequence of characters.

Es ist ein Fallback aufgetreten (weitere Informationen finden Sie unter Zeichencodierung in .NET).A fallback occurred (for more information, see Character Encoding in .NET) -und--and- Die EncoderFallback-Eigenschaft ist auf EncoderExceptionFallback festgelegt.The EncoderFallback property is set to EncoderExceptionFallback.

Beispiele

Im folgenden Beispiel wird ein Array mit einem lateinischen groß-und Kleinbuchstaben aufgefüllt und die GetByteCount(Char[], Int32, Int32)-Methode aufgerufen, um die Anzahl von Bytes zu bestimmen, die zum Codieren der Zeichen für Lateinische Kleinbuchstaben benötigt werden.The following example populates an array with a Latin uppercase and lowercase characters and calls the GetByteCount(Char[], Int32, Int32) method to determine the number of bytes needed to encode the Latin lowercase characters. Diese Informationen werden dann zusammen mit der Gesamtanzahl der benötigten Bytes angezeigt, wenn eine Byte Reihenfolge-Markierung hinzugefügt wird.It then displays this information along with the total number of bytes needed if a byte order mark is added. Diese Zahl wird mit dem Wert verglichen, der von der GetMaxByteCount-Methode zurückgegeben wird, die die maximale Anzahl von Bytes angibt, die zum Codieren der lateinischen Kleinbuchstaben erforderlich sind.It compares this number with the value returned by the GetMaxByteCount method, which indicates maximum number of bytes needed to encode the Latin lowercase characters.

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 Array Größe zu berechnen, die GetBytes zum Speichern der resultierenden Bytes benötigt, wird die Verwendung GetByteCount-Methode aufgerufen.To calculate the exact array size required by GetBytes to store the resulting bytes, you call the uses GetByteCount method. Um die maximale Array Größe zu berechnen, wird die GetMaxByteCount-Methode aufgerufen.To calculate the maximum array size, you call the GetMaxByteCount method. Die GetByteCount-Methode weist im Allgemeinen weniger Arbeitsspeicher zu, während die GetMaxByteCount-Methode im Allgemeinen schneller ausgeführt wird.The GetByteCount method generally allocates less memory, while the GetMaxByteCount method generally executes faster.

Bei der Fehlererkennung bewirkt eine ungültige Sequenz, dass diese Methode eine ArgumentException Ausnahme auslöst.With error detection, an invalid sequence causes this method to throw an ArgumentException exception. Ohne Fehlererkennung werden ungültige Sequenzen ignoriert, und es wird keine Ausnahme ausgelöst.Without error detection, invalid sequences are ignored, and no exception is thrown.

Um sicherzustellen, dass die codierten Bytes ordnungsgemäß decodiert werden, wenn Sie als Datei oder als Stream gespeichert werden, können Sie einem Stream codierter Bytes eine Präambel als Präfix voranstellen.To ensure that the encoded bytes are decoded properly when they are saved as a file or as a stream, you can prefix a stream of encoded bytes with a preamble. Das Einfügen der Präambel am Anfang eines Bytestreams (z. b. am Anfang einer Bytefolge, die in eine Datei geschrieben werden soll) ist die Verantwortung des Entwicklers, und die Anzahl der Bytes in der Präambel wird nicht in dem Wert widergespiegelt, der von der GetByteCount-Methode zurückgegeben wird.Inserting the preamble at the beginning of a byte stream (such as at the beginning of a series of bytes to be written to a file) is the developer's responsibility, and the number of bytes in the preamble is not reflected in the value returned by the GetByteCount method.

Siehe auch

Gilt für: