UTF32Encoding.GetByteCount Metod

Definition

Beräknar antalet byte som skapas genom att koda en uppsättning tecken.

Överlagringar

Name Description
GetByteCount(String)

Beräknar antalet byte som genereras genom att koda tecknen i den angivna String.

GetByteCount(Char*, Int32)

Beräknar antalet byte som skapas genom att koda en uppsättning tecken med början vid den angivna teckenpekaren.

GetByteCount(Char[], Int32, Int32)

Beräknar antalet byte som skapas genom att koda en uppsättning tecken från den angivna teckenmatrisen.

GetByteCount(String)

Beräknar antalet byte som genereras genom att koda tecknen i den angivna String.

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

Parametrar

s
String

Innehåller String den uppsättning tecken som ska kodas.

Returer

Antalet byte som genereras genom kodning av de angivna tecknen.

Undantag

s är null.

Det resulterande antalet byte är större än det maximala antalet som kan returneras som ett heltal.

Felidentifiering är aktiverat och s innehåller en ogiltig teckensekvens.

En reserv inträffade (mer information finns i Character Encoding i .NET)

-och-

EncoderFallback är inställt på EncoderExceptionFallback.

Exempel

I följande exempel anropas GetMaxByteCount metoderna och GetByteCount(String) för att beräkna det maximala och faktiska antalet byte som krävs för att koda en sträng. Den visar också det faktiska antalet byte som krävs för att lagra en byteström med ett byteordningsmärke.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        String chars = "UTF-32 Encoding Example";
        Encoding enc = Encoding.UTF32;

        Console.WriteLine("Bytes needed to encode '{0}':", chars);
        Console.WriteLine("   Maximum:         {0}",
                          enc.GetMaxByteCount(chars.Length));
        Console.WriteLine("   Actual:          {0}",
                          enc.GetByteCount(chars));
        Console.WriteLine("   Actual with BOM: {0}",
                          enc.GetByteCount(chars) + enc.GetPreamble().Length);
    }
}
// The example displays the following output:
//       Bytes needed to encode 'UTF-32 Encoding Example':
//          Maximum:         96
//          Actual:          92
//          Actual with BOM: 96
Imports System.Text

Module Example
    Public Sub Main()
        Dim chars As String = "UTF-32 Encoding Example"
        Dim enc As Encoding = Encoding.UTF32

        Console.WriteLine("Bytes needed to encode '{0}':", chars)
        Console.WriteLine("   Maximum:         {0}",
                          enc.GetMaxByteCount(chars.Length))
        Console.WriteLine("   Actual:          {0}",
                          enc.GetByteCount(chars))
        Console.WriteLine("   Actual with BOM: {0}",
                          enc.GetByteCount(chars) + enc.GetPreamble().Length)
    End Sub
End Module
' The example displays the following output:
'       Bytes needed to encode 'UTF-32 Encoding Example':
'          Maximum:         96
'          Actual:          92
'          Actual with BOM: 96

Kommentarer

Om du vill beräkna den exakta matrisstorlek som krävs för GetBytes att lagra de resulterande byteen GetByteCount anropar du metoden. Om du vill beräkna den maximala matrisstorleken GetMaxByteCount anropar du metoden. Metoden GetByteCount allokerar vanligtvis mindre minne, medan GetMaxByteCount metoden vanligtvis körs snabbare.

Med felidentifiering orsakar en ogiltig sekvens att den här metoden genererar en ArgumentException. Utan felidentifiering ignoreras ogiltiga sekvenser och inget undantag utlöses.

För att säkerställa att de kodade byteen avkodas korrekt när de sparas som en fil eller som en ström, kan du prefixa en ström med kodade byte med en ingress. Att infoga ingressen i början av en byteström (till exempel i början av en serie byte som ska skrivas till en fil) är utvecklarens ansvar, och antalet byte i ingressen återspeglas inte i det värde som returneras av GetByteCount metoden.

Se även

Gäller för

GetByteCount(Char*, Int32)

Viktigt!

Detta API uppfyller inte CLS.

Beräknar antalet byte som skapas genom att koda en uppsättning tecken med början vid den angivna teckenpekaren.

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.Security.SecurityCritical>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
override this.GetByteCount : nativeptr<char> * int -> int

Parametrar

chars
Char*

En pekare till det första tecknet som ska kodas.

count
Int32

Antalet tecken som ska kodas.

Returer

Antalet byte som genereras genom kodning av de angivna tecknen.

Attribut

Undantag

chars är null.

count är mindre än noll.

-eller-

Det resulterande antalet byte är större än det maximala antalet som kan returneras som ett heltal.

Felidentifiering är aktiverat och chars innehåller en ogiltig teckensekvens.

En reserv inträffade (mer information finns i Character Encoding i .NET)

-och-

EncoderFallback är inställt på EncoderExceptionFallback.

Kommentarer

Om du vill beräkna den exakta matrisstorlek som krävs för GetBytes att lagra de resulterande byteen GetByteCount anropar du metoden. Om du vill beräkna den maximala matrisstorleken GetMaxByteCountanropar du . Metoden GetByteCount allokerar vanligtvis mindre minne, medan GetMaxByteCount metoden vanligtvis körs snabbare.

Med felidentifiering orsakar en ogiltig sekvens att den här metoden genererar en ArgumentException. Utan felidentifiering ignoreras ogiltiga sekvenser och inget undantag utlöses.

För att säkerställa att de kodade byteen avkodas korrekt när de sparas som en fil eller en dataström kan du prefixa en ström med kodade byte med en ingress. Att infoga en ingress i början av en byteström (till exempel i början av en serie byte som ska skrivas till en fil) är utvecklarens ansvar och antalet byte i ingressen återspeglas inte i det värde som returneras av GetByteCount metoden.

Se även

Gäller för

GetByteCount(Char[], Int32, Int32)

Beräknar antalet byte som skapas genom att koda en uppsättning tecken från den angivna teckenmatrisen.

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

Parametrar

chars
Char[]

Teckenmatrisen som innehåller den uppsättning tecken som ska kodas.

index
Int32

Indexet för det första tecknet som ska kodas.

count
Int32

Antalet tecken som ska kodas.

Returer

Antalet byte som genereras genom kodning av de angivna tecknen.

Undantag

chars är null.

index eller count är mindre än noll.

-eller-

index och count ange inte ett giltigt intervall i chars.

-eller-

Det resulterande antalet byte är större än det maximala antalet som kan returneras som ett heltal.

Felidentifiering är aktiverat och chars innehåller en ogiltig teckensekvens.

En reserv inträffade (mer information finns i Character Encoding i .NET)

-och-

EncoderFallback är inställt på EncoderExceptionFallback.

Exempel

I följande exempel fylls en matris med latinska versaler och gemener GetByteCount(Char[], Int32, Int32) och anropar metoden för att fastställa antalet byte som behövs för att koda de latinska gemena tecknen. Den visar sedan den här informationen tillsammans med det totala antalet byte som behövs om en byteordningsmarkering läggs till. Det jämför det här talet med det värde som returneras av GetMaxByteCount metoden, vilket anger det maximala antalet byte som behövs för att koda de latinska gemena tecknen. I följande exempel fylls en matris med en kombination av grekiska och kyrilliska tecken och anropar GetByteCount(Char[], Int32, Int32) metoden för att fastställa antalet byte som behövs för att koda de kyrilliska tecknen. Den visar sedan den här informationen tillsammans med det totala antalet byte som behövs om en byteordningsmarkering läggs till. Det jämför det här talet med det värde som returneras av GetMaxByteCount metoden, vilket anger det maximala antalet byte som krävs för att koda de kyrilliska tecknen.

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 enc = Encoding.UTF32;

      // 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}",
                        enc.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual:          {0,5:N0}",
                        enc.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual with BOM: {0,5:N0}",
                        enc.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1) +
                                          enc.GetPreamble().Length);
   }
}
// The example displays the following output:
//       Bytes needed for lowercase Latin characters:
//          Maximum:           108
//          Actual:            104
//          Actual with BOM:   108
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 enc As Encoding = Encoding.UTF32
      
      ' 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}",
                          enc.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual:          {0,5:N0}",
                          enc.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual with BOM: {0,5:N0}",
                          enc.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1) +
                                            enc.GetPreamble().Length)
   End Sub
End Module
' The example displays the following output:
'       Bytes needed for lowercase Latin characters:
'          Maximum:           108
'          Actual:            104
'          Actual with BOM:   108

Kommentarer

Om du vill beräkna den exakta matrisstorlek som krävs för GetBytes att lagra de resulterande byteen GetByteCount anropar du metoden. Om du vill beräkna den maximala matrisstorleken GetMaxByteCount anropar du metoden. Metoden GetByteCount allokerar vanligtvis mindre minne, medan GetMaxByteCount metoden vanligtvis körs snabbare.

Med felidentifiering orsakar en ogiltig sekvens att den här metoden genererar en ArgumentException. Utan felidentifiering ignoreras ogiltiga sekvenser och inget undantag utlöses.

För att säkerställa att de kodade byteen avkodas korrekt när de sparas som en fil eller en dataström kan du prefixa en ström med kodade byte med en ingress. Att infoga en ingress i början av en byteström (till exempel i början av en serie byte som ska skrivas till en fil) är utvecklarens ansvar och antalet byte i ingressen återspeglas inte i det värde som returneras av GetByteCount metoden.

Se även

Gäller för