UTF8Encoding.GetByteCount Methode

Definitie

Berekent het aantal bytes dat wordt geproduceerd door een set tekens te coderen.

Overloads

Name Description
GetByteCount(String)

Berekent het aantal bytes dat wordt geproduceerd door de tekens in de opgegeven Stringcode te coderen.

GetByteCount(Char*, Int32)

Berekent het aantal bytes dat wordt geproduceerd door een set tekens te coderen die beginnen bij de opgegeven tekenwijzer.

GetByteCount(Char[], Int32, Int32)

Berekent het aantal bytes dat wordt geproduceerd door een set tekens van de opgegeven tekenmatrix te coderen.

GetByteCount(String)

Berekent het aantal bytes dat wordt geproduceerd door de tekens in de opgegeven Stringcode te coderen.

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

Parameters

chars
String

De String set tekens die moeten worden gecodeerd.

Retouren

Het aantal bytes dat wordt geproduceerd door de opgegeven tekens te coderen.

Uitzonderingen

chars is null.

Het resulterende aantal bytes is groter dan het maximumaantal dat als geheel getal kan worden geretourneerd.

Foutdetectie is ingeschakeld en chars bevat een ongeldige reeks tekens.

Er is een terugval opgetreden (zie Character Encoding in .NET)

en

EncoderFallback is ingesteld op EncoderExceptionFallback.

Voorbeelden

In het volgende voorbeeld worden de GetMaxByteCount en GetByteCount(String) methoden aangeroepen om het maximum en het werkelijke aantal bytes te berekenen dat nodig is om een tekenreeks te coderen. Ook wordt het werkelijke aantal bytes weergegeven dat is vereist voor het opslaan van een bytestroom met een bytevolgordemarkering.

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

Opmerkingen

Als u de exacte matrixgrootte wilt berekenen die is vereist voor GetBytes het opslaan van de resulterende bytes, roept u de GetByteCount methode aan. Als u de maximale matrixgrootte wilt berekenen, roept u de GetMaxByteCount methode aan. De GetByteCount methode wijst doorgaans minder geheugen toe, terwijl de GetMaxByteCount methode over het algemeen sneller wordt uitgevoerd.

Bij foutdetectie zorgt een ongeldige reeks ervoor dat deze methode een ArgumentException uitzondering genereert. Zonder foutdetectie worden ongeldige reeksen genegeerd en wordt er geen uitzondering gegenereerd.

Om ervoor te zorgen dat de gecodeerde bytes correct worden gedecodeerd wanneer ze worden opgeslagen als een bestand of als een stroom, kunt u een stroom gecodeerde bytes vooraf laten gaan met een preparate. Het invoegen van de preambule aan het begin van een bytestroom (zoals aan het begin van een reeks bytes die naar een bestand moeten worden geschreven) is de verantwoordelijkheid van de ontwikkelaar en het aantal bytes in de preambule wordt niet weerspiegeld in de waarde die door de GetByteCount methode wordt geretourneerd.

Zie ook

Van toepassing op

GetByteCount(Char*, Int32)

Belangrijk

Deze API is niet CLS-conform.

Berekent het aantal bytes dat wordt geproduceerd door een set tekens te coderen die beginnen bij de opgegeven tekenwijzer.

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

Parameters

chars
Char*

Een aanwijzer naar het eerste teken om te coderen.

count
Int32

Het aantal tekens dat moet worden gecodeerd.

Retouren

Het aantal bytes dat wordt geproduceerd door de opgegeven tekens te coderen.

Kenmerken

Uitzonderingen

chars is null.

count is kleiner dan nul.

– of –

Het resulterende aantal bytes is groter dan het maximumaantal dat als geheel getal kan worden geretourneerd.

Foutdetectie is ingeschakeld en chars bevat een ongeldige reeks tekens.

Er is een terugval opgetreden (zie Character Encoding in .NET voor een volledige uitleg).

en

EncoderFallback is ingesteld op EncoderExceptionFallback.

Opmerkingen

Als u de exacte matrixgrootte wilt berekenen die door de GetBytes methode is vereist om de resulterende bytes op te slaan, roept u de GetByteCount methode aan. Als u de maximale matrixgrootte wilt berekenen, roept u de GetMaxByteCount methode aan. De GetByteCount methode wijst doorgaans minder geheugen toe, terwijl de GetMaxByteCount methode over het algemeen sneller wordt uitgevoerd.

Bij foutdetectie zorgt een ongeldige reeks ervoor dat deze methode een ArgumentException uitzondering genereert. Zonder foutdetectie worden ongeldige reeksen genegeerd en wordt er geen uitzondering gegenereerd.

Om ervoor te zorgen dat de gecodeerde bytes correct worden gedecodeerd wanneer ze worden opgeslagen als een bestand of als een stroom, kunt u een stroom gecodeerde bytes vooraf laten gaan met een preparate. Het invoegen van de preambule aan het begin van een bytestroom (zoals aan het begin van een reeks bytes die naar een bestand moeten worden geschreven) is de verantwoordelijkheid van de ontwikkelaar en het aantal bytes in de preambule wordt niet weerspiegeld in de waarde die door de GetByteCount methode wordt geretourneerd.

Zie ook

Van toepassing op

GetByteCount(Char[], Int32, Int32)

Berekent het aantal bytes dat wordt geproduceerd door een set tekens van de opgegeven tekenmatrix te coderen.

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

Parameters

chars
Char[]

De tekenmatrix die de set tekens bevat die moeten worden gecodeerd.

index
Int32

De index van het eerste teken om te coderen.

count
Int32

Het aantal tekens dat moet worden gecodeerd.

Retouren

Het aantal bytes dat wordt geproduceerd door de opgegeven tekens te coderen.

Uitzonderingen

chars is null.

index of count kleiner is dan nul.

– of –

index en count geef geen geldig bereik aan in chars.

– of –

Het resulterende aantal bytes is groter dan het maximumaantal dat als geheel getal kan worden geretourneerd.

Foutdetectie is ingeschakeld en chars bevat een ongeldige reeks tekens.

Er is een terugval opgetreden (zie Character Encoding in .NET)

en

De eigenschap EncoderFallback is ingesteld op EncoderExceptionFallback.

Voorbeelden

In het volgende voorbeeld wordt een matrix gevuld met een Latijnse hoofdletter en kleine letters en wordt de GetByteCount(Char[], Int32, Int32) methode aangeroepen om het aantal bytes te bepalen dat nodig is om de Latijnse kleine letters te coderen. Vervolgens wordt deze informatie weergegeven, samen met het totale aantal bytes dat nodig is als er een byteordermarkering wordt toegevoegd. Het vergelijkt dit getal met de waarde die wordt geretourneerd door de GetMaxByteCount methode, wat het maximum aantal bytes aangeeft dat nodig is om de Latijnse kleine letters te coderen.

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

Opmerkingen

Als u de exacte matrixgrootte wilt berekenen die nodig is om GetBytes de resulterende bytes op te slaan, roept u de methode uses GetByteCount aan. Als u de maximale matrixgrootte wilt berekenen, roept u de GetMaxByteCount methode aan. De GetByteCount methode wijst doorgaans minder geheugen toe, terwijl de GetMaxByteCount methode over het algemeen sneller wordt uitgevoerd.

Bij foutdetectie zorgt een ongeldige reeks ervoor dat deze methode een ArgumentException uitzondering genereert. Zonder foutdetectie worden ongeldige reeksen genegeerd en wordt er geen uitzondering gegenereerd.

Om ervoor te zorgen dat de gecodeerde bytes correct worden gedecodeerd wanneer ze worden opgeslagen als een bestand of als een stroom, kunt u een stroom gecodeerde bytes vooraf laten gaan met een preparate. Het invoegen van de preambule aan het begin van een bytestroom (zoals aan het begin van een reeks bytes die naar een bestand moeten worden geschreven) is de verantwoordelijkheid van de ontwikkelaar en het aantal bytes in de preambule wordt niet weerspiegeld in de waarde die door de GetByteCount methode wordt geretourneerd.

Zie ook

Van toepassing op