UTF32Encoding.GetByteCount Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków.
Przeciążenia
GetByteCount(String) |
Oblicza liczbę bajtów generowanych przez kodowanie znaków w określonym Stringobiekcie . |
GetByteCount(Char*, Int32) |
Oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków rozpoczynających się od określonego wskaźnika znaków. |
GetByteCount(Char[], Int32, Int32) |
Oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków z określonej tablicy znaków. |
GetByteCount(String)
- Źródło:
- UTF32Encoding.cs
- Źródło:
- UTF32Encoding.cs
- Źródło:
- UTF32Encoding.cs
Oblicza liczbę bajtów generowanych przez kodowanie znaków w określonym Stringobiekcie .
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
Parametry
Zwraca
Liczba bajtów generowanych przez kodowanie określonych znaków.
Wyjątki
s
to null
.
Wynikowa liczba bajtów jest większa niż maksymalna liczba, którą można zwrócić jako liczbę całkowitą.
Wykrywanie błędów jest włączone i s
zawiera nieprawidłową sekwencję znaków.
Wystąpił powrót (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)
-I-
EncoderFallback parametr jest ustawiony na EncoderExceptionFallbackwartość .
Przykłady
Poniższy przykład wywołuje GetMaxByteCount metody i GetByteCount(String) w celu obliczenia maksymalnej i rzeczywistej liczby bajtów wymaganych do zakodowania ciągu. Wyświetla również rzeczywistą liczbę bajtów wymaganych do przechowywania strumienia bajtów z znacznikiem kolejności bajtów.
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
Uwagi
Aby obliczyć dokładny rozmiar tablicy wymagany przez GetBytes program do przechowywania bajtów wynikowych, należy wywołać metodę GetByteCount . Aby obliczyć maksymalny rozmiar tablicy, należy wywołać metodę GetMaxByteCount . Metoda GetByteCount zwykle przydziela mniej pamięci, podczas gdy GetMaxByteCount metoda zwykle wykonuje się szybciej.
W przypadku wykrywania błędów nieprawidłowa sekwencja powoduje, że ta metoda zgłasza błąd ArgumentException. Bez wykrywania błędów nieprawidłowe sekwencje są ignorowane i nie jest zgłaszany żaden wyjątek.
Aby upewnić się, że zakodowane bajty są prawidłowo dekodowane, gdy są zapisywane jako plik lub jako strumień, można prefiks strumienia zakodowanych bajtów z prefiksem. Wstawienie prezbiory na początku strumienia bajtów (na przykład na początku serii bajtów do zapisania w pliku) jest odpowiedzialnością dewelopera, a liczba bajtów w preficie nie jest odzwierciedlana w wartości zwracanej przez metodę GetByteCount .
Zobacz też
Dotyczy
GetByteCount(Char*, Int32)
- Źródło:
- UTF32Encoding.cs
- Źródło:
- UTF32Encoding.cs
- Źródło:
- UTF32Encoding.cs
Ważne
Ten interfejs API nie jest zgodny ze specyfikacją CLS.
Oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków rozpoczynających się od określonego wskaźnika znaków.
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
Parametry
- chars
- Char*
Wskaźnik do pierwszego znaku w celu zakodowania.
- count
- Int32
Liczba znaków do zakodowania.
Zwraca
Liczba bajtów generowanych przez kodowanie określonych znaków.
- Atrybuty
Wyjątki
chars
to null
.
Parametr count
ma wartość niższą niż zero.
-lub-
Wynikowa liczba bajtów jest większa niż maksymalna liczba, którą można zwrócić jako liczbę całkowitą.
Wykrywanie błędów jest włączone i chars
zawiera nieprawidłową sekwencję znaków.
Wystąpił powrót (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)
-I-
EncoderFallback parametr jest ustawiony na EncoderExceptionFallbackwartość .
Uwagi
Aby obliczyć dokładny rozmiar tablicy wymagany przez GetBytes program do przechowywania bajtów wynikowych, należy wywołać metodę GetByteCount . Aby obliczyć maksymalny rozmiar tablicy, należy wywołać metodę GetMaxByteCount. Metoda GetByteCount zwykle przydziela mniej pamięci, podczas gdy GetMaxByteCount metoda zwykle wykonuje się szybciej.
W przypadku wykrywania błędów nieprawidłowa sekwencja powoduje, że ta metoda zgłasza błąd ArgumentException. Bez wykrywania błędów nieprawidłowe sekwencje są ignorowane i nie jest zgłaszany żaden wyjątek.
Aby upewnić się, że zakodowane bajty są prawidłowo dekodowane, gdy są zapisywane jako plik lub strumień, można prefiks strumienia zakodowanych bajtów z prefiksem. Wstawianie prezbiory na początku strumienia bajtów (na przykład na początku serii bajtów do zapisania w pliku) jest odpowiedzialnością dewelopera, a liczba bajtów w preficie nie jest odzwierciedlana w wartości zwracanej przez metodę GetByteCount .
Zobacz też
Dotyczy
GetByteCount(Char[], Int32, Int32)
- Źródło:
- UTF32Encoding.cs
- Źródło:
- UTF32Encoding.cs
- Źródło:
- UTF32Encoding.cs
Oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków z określonej tablicy znaków.
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
Parametry
- chars
- Char[]
Tablica znaków zawierająca zestaw znaków do kodowania.
- index
- Int32
Indeks pierwszego znaku do zakodowania.
- count
- Int32
Liczba znaków do zakodowania.
Zwraca
Liczba bajtów generowanych przez kodowanie określonych znaków.
Wyjątki
chars
to null
.
index
wartość lub count
jest mniejsza niż zero.
-lub-
index
i count
nie oznaczają prawidłowego zakresu w elemecie chars
.
-lub-
Wynikowa liczba bajtów jest większa niż maksymalna liczba, którą można zwrócić jako liczbę całkowitą.
Wykrywanie błędów jest włączone i chars
zawiera nieprawidłową sekwencję znaków.
Wystąpił powrót (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)
-I-
EncoderFallback parametr jest ustawiony na EncoderExceptionFallbackwartość .
Przykłady
W poniższym przykładzie tablica jest wypełniana wielkimi i małymi literami łacińskimi oraz wywołuje GetByteCount(Char[], Int32, Int32) metodę w celu określenia liczby bajtów potrzebnych do kodowania małych liter łacińskich. Następnie wyświetla te informacje wraz z całkowitą liczbą bajtów potrzebnych w przypadku dodania znacznika kolejności bajtów. Porównuje tę liczbę z wartością zwracaną przez metodę GetMaxByteCount , która wskazuje maksymalną liczbę bajtów potrzebnych do kodowania małych liter łacińskich. Poniższy przykład wypełnia tablicę kombinacją znaków greckich i cyrylica i wywołuje GetByteCount(Char[], Int32, Int32) metodę w celu określenia liczby bajtów potrzebnych do kodowania znaków cyrylica. Następnie wyświetla te informacje wraz z całkowitą liczbą bajtów potrzebnych w przypadku dodania znacznika kolejności bajtów. Porównuje tę liczbę z wartością zwróconą przez metodę GetMaxByteCount , która wskazuje maksymalną liczbę bajtów potrzebnych do zakodowania znaków cyrylica.
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
Uwagi
Aby obliczyć dokładny rozmiar tablicy wymagany przez GetBytes program do przechowywania bajtów wynikowych, należy wywołać metodę GetByteCount . Aby obliczyć maksymalny rozmiar tablicy, należy wywołać metodę GetMaxByteCount . Metoda GetByteCount zwykle przydziela mniej pamięci, podczas gdy GetMaxByteCount metoda zwykle wykonuje się szybciej.
W przypadku wykrywania błędów nieprawidłowa sekwencja powoduje, że ta metoda zgłasza błąd ArgumentException. Bez wykrywania błędów nieprawidłowe sekwencje są ignorowane i nie jest zgłaszany żaden wyjątek.
Aby upewnić się, że zakodowane bajty są prawidłowo dekodowane, gdy są zapisywane jako plik lub strumień, można prefiks strumienia zakodowanych bajtów z prefiksem. Wstawianie prezbiory na początku strumienia bajtów (na przykład na początku serii bajtów do zapisania w pliku) jest odpowiedzialnością dewelopera, a liczba bajtów w preficie nie jest odzwierciedlana w wartości zwracanej przez metodę GetByteCount .