UTF32Encoding.GetByteCount Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
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.