UnicodeEncoding.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 ciągu. |
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:
- UnicodeEncoding.cs
- Źródło:
- UnicodeEncoding.cs
- Źródło:
- UnicodeEncoding.cs
Oblicza liczbę bajtów generowanych przez kodowanie znaków w określonym ciągu.
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
- s
- String
Ciąg zawierający zestaw znaków do zakodowania.
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-16 Encoding Example";
Encoding unicode = Encoding.Unicode;
Console.WriteLine("Bytes needed to encode '{0}':", chars);
Console.WriteLine(" Maximum: {0}",
unicode.GetMaxByteCount(chars.Length));
Console.WriteLine(" Actual: {0}",
unicode.GetByteCount(chars));
Console.WriteLine(" Actual with BOM: {0}",
unicode.GetByteCount(chars) + unicode.GetPreamble().Length);
}
}
// The example displays the following output:
// Bytes needed to encode 'UTF-16 Encoding Example':
// Maximum: 48
// Actual: 46
// Actual with BOM: 48
Imports System.Text
Module Example
Public Sub Main()
Dim chars As String = "UTF-16 Encoding Example"
Dim unicode As Encoding = Encoding.Unicode
Console.WriteLine("Bytes needed to encode '{0}':", chars)
Console.WriteLine(" Maximum: {0}",
unicode.GetMaxByteCount(chars.Length))
Console.WriteLine(" Actual: {0}",
unicode.GetByteCount(chars))
Console.WriteLine(" Actual with BOM: {0}",
unicode.GetByteCount(chars) + unicode.GetPreamble().Length)
End Sub
End Module
' The example displays the following output:
' Bytes needed to encode 'UTF-16 Encoding Example':
' Maximum: 48
' Actual: 46
' Actual with BOM: 48
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.
Ważne
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(String) .
Zobacz też
Dotyczy
GetByteCount(Char*, Int32)
- Źródło:
- UnicodeEncoding.cs
- Źródło:
- UnicodeEncoding.cs
- Źródło:
- UnicodeEncoding.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)]
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)>]
override this.GetByteCount : nativeptr<char> * int -> int
[<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
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, który GetBytes wymaga przechowywania wynikowych bajtów, 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.
Ważne
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, Int32)
- Źródło:
- UnicodeEncoding.cs
- Źródło:
- UnicodeEncoding.cs
- Źródło:
- UnicodeEncoding.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
is null
(Nothing
).
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 unicode = Encoding.Unicode;
// 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}",
unicode.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1));
Console.WriteLine(" Actual: {0,5:N0}",
unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
lowercaseEnd - lowercaseStart + 1));
Console.WriteLine(" Actual with BOM: {0,5:N0}",
unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
lowercaseEnd - lowercaseStart + 1) +
unicode.GetPreamble().Length);
}
}
// The example displays the following output:
// Bytes needed for lowercase Latin characters:
// Maximum: 54
// Actual: 52
// Actual with BOM: 54
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 unicode As Encoding = Encoding.Unicode
' 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}",
unicode.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1))
Console.WriteLine(" Actual: {0,5:N0}",
unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
lowercaseEnd - lowercaseStart + 1))
Console.WriteLine(" Actual with BOM: {0,5:N0}",
unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
lowercaseEnd - lowercaseStart + 1) +
unicode.GetPreamble().Length)
End Sub
End Module
' The example displays the following output:
' Bytes needed for lowercase Latin characters:
' Maximum: 54
' Actual: 52
' Actual with BOM: 54
Uwagi
Aby obliczyć dokładny rozmiar tablicy wymagany przez GetBytes program do przechowywania wynikowych bajtów, aplikacja używa elementu 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.
Po włączeniu 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. 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(Char[], Int32, Int32) .