UTF8Encoding.GetByteCount Methode

Definition

Berechnet die Anzahl der Bytes, die durch codieren einer Reihe von Zeichen erzeugt werden.

Überlädt

Name Beschreibung
GetByteCount(String)

Berechnet die Anzahl der Byte, die durch codieren die Zeichen in der angegebenen String.

GetByteCount(Char*, Int32)

Berechnet die Anzahl der Bytes, die durch Codieren einer Reihe von Zeichen erstellt werden, beginnend mit dem angegebenen Zeichenzeiger.

GetByteCount(Char[], Int32, Int32)

Berechnet die Anzahl der Bytes, die durch Codieren einer Reihe von Zeichen aus dem angegebenen Zeichenarray erzeugt werden.

GetByteCount(String)

Berechnet die Anzahl der Byte, die durch codieren die Zeichen in der angegebenen 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 enthaltende Zeichenmenge, die codiert werden soll.

Gibt zurück

Die Anzahl der Byte, die durch die Codierung der angegebenen Zeichen erzeugt werden.

Ausnahmen

chars ist null.

Die resultierende Anzahl von Bytes ist größer als die maximale Zahl, die als ganze Zahl zurückgegeben werden kann.

Fehlererkennung ist aktiviert und chars enthält eine ungültige Abfolge von Zeichen.

Ein Fallback ist aufgetreten (weitere Informationen finden Sie unter "Zeichencodierung in .NET")

-und-

EncoderFallback ist auf EncoderExceptionFallback festgelegt.

Beispiele

Im folgenden Beispiel werden die und GetByteCount(String) die GetMaxByteCount Methoden 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 einem Bytereihenfolgezeichen 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 GetByteCount Methode auf. Um die maximale Arraygröße zu berechnen, rufen Sie die GetMaxByteCount Methode auf. Die GetByteCount Methode weist in der Regel weniger Arbeitsspeicher zu, während die GetMaxByteCount Methode im Allgemeinen schneller ausgeführt wird.

Bei der Fehlererkennung führt eine ungültige Sequenz dazu, 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 Datenstrom gespeichert werden, können Sie einem Datenstrom codierter Bytes ein Präambel voranstellen. Das Einfügen des Präambels am Anfang eines Bytestreams (z. B. am Anfang einer Reihe von Bytes, die in eine Datei geschrieben werden sollen) ist die Verantwortung des Entwicklers, und die Anzahl der Bytes im Präambel wird nicht in dem von der GetByteCount Methode zurückgegebenen Wert widergespiegelt.

Weitere Informationen

Gilt für:

GetByteCount(Char*, Int32)

Wichtig

Diese API ist nicht CLS-kompatibel.

Berechnet die Anzahl der Bytes, die durch Codieren einer Reihe von Zeichen erstellt werden, beginnend mit dem angegebenen Zeichenzeiger.

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)]
public override int GetByteCount(char* chars, int count);
[<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
[<System.CLSCompliant(false)>]
override this.GetByteCount : nativeptr<char> * int -> int

Parameter

chars
Char*

Ein Zeiger auf das erste zeichen, das codiert werden soll.

count
Int32

Die Anzahl der zu codierenden Zeichen.

Gibt zurück

Die Anzahl der Byte, die durch die Codierung der angegebenen Zeichen erzeugt werden.

Attribute

Ausnahmen

chars ist null.

count ist kleiner als 0 (null).

-oder-

Die resultierende Anzahl von Bytes ist größer als die maximale Zahl, die als ganze Zahl zurückgegeben werden kann.

Fehlererkennung ist aktiviert und chars enthält eine ungültige Abfolge von Zeichen.

Ein Fallback ist aufgetreten (eine vollständige Erläuterung finden Sie unter Character-Codierung in .NET).

-und-

EncoderFallback ist auf EncoderExceptionFallback festgelegt.

Hinweise

Um die genaue Arraygröße zu berechnen, die von der GetBytes Methode zum Speichern der resultierenden Bytes benötigt wird, rufen Sie die GetByteCount Methode auf. Um die maximale Arraygröße zu berechnen, rufen Sie die GetMaxByteCount Methode auf. Die GetByteCount Methode weist in der Regel weniger Arbeitsspeicher zu, während die GetMaxByteCount Methode im Allgemeinen schneller ausgeführt wird.

Bei der Fehlererkennung führt eine ungültige Sequenz dazu, 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 Datenstrom gespeichert werden, können Sie einem Datenstrom codierter Bytes ein Präambel voranstellen. Das Einfügen des Präambels am Anfang eines Bytestreams (z. B. am Anfang einer Reihe von Bytes, die in eine Datei geschrieben werden sollen) ist die Verantwortung des Entwicklers, und die Anzahl der Bytes im Präambel wird nicht in dem von der GetByteCount Methode zurückgegebenen Wert widergespiegelt.

Weitere Informationen

Gilt für:

GetByteCount(Char[], Int32, Int32)

Berechnet die Anzahl der Bytes, die durch Codieren einer Reihe von 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 Zeichensätze 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 Byte, die durch die Codierung der angegebenen Zeichen erzeugt werden.

Ausnahmen

chars ist null.

index oder count ist kleiner als Null.

-oder-

index und count keinen gültigen Bereich in chars.

-oder-

Die resultierende Anzahl von Bytes ist größer als die maximale Zahl, die als ganze Zahl zurückgegeben werden kann.

Fehlererkennung ist aktiviert und chars enthält eine ungültige Abfolge von Zeichen.

Ein Fallback ist 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 GetByteCount(Char[], Int32, Int32) Methode aufgerufen, um die Anzahl der Bytes zu ermitteln, die zum Codieren der lateinischen Kleinbuchstaben erforderlich sind. Anschließend werden diese Informationen zusammen mit der Gesamtanzahl der benötigten Bytes angezeigt, wenn eine Bytereihenfolgenmarke hinzugefügt wird. Sie vergleicht diese Zahl mit dem von der GetMaxByteCount Methode zurückgegebenen Wert, der 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 zum GetBytes Speichern der resultierenden Bytes erforderlich ist, rufen Sie die uses-Methode GetByteCount auf. Um die maximale Arraygröße zu berechnen, rufen Sie die GetMaxByteCount Methode auf. Die GetByteCount Methode weist in der Regel weniger Arbeitsspeicher zu, während die GetMaxByteCount Methode im Allgemeinen schneller ausgeführt wird.

Bei der Fehlererkennung führt eine ungültige Sequenz dazu, 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 Datenstrom gespeichert werden, können Sie einem Datenstrom codierter Bytes ein Präambel voranstellen. Das Einfügen des Präambels am Anfang eines Bytestreams (z. B. am Anfang einer Reihe von Bytes, die in eine Datei geschrieben werden sollen) ist die Verantwortung des Entwicklers, und die Anzahl der Bytes im Präambel wird nicht in dem von der GetByteCount Methode zurückgegebenen Wert widergespiegelt.

Weitere Informationen

Gilt für: