UTF8Encoding.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(ReadOnlySpan<Char>) |
Oblicza liczbę bajtów generowanych przez kodowanie określonego zakresu znaków. |
| 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(ReadOnlySpan<Char>)
- Źródło:
- UTF8Encoding.cs
- Źródło:
- UTF8Encoding.cs
- Źródło:
- UTF8Encoding.cs
Oblicza liczbę bajtów generowanych przez kodowanie określonego zakresu znaków.
public:
override int GetByteCount(ReadOnlySpan<char> chars);
public override int GetByteCount (ReadOnlySpan<char> chars);
override this.GetByteCount : ReadOnlySpan<char> -> int
Public Overrides Function GetByteCount (chars As ReadOnlySpan(Of Char)) As Integer
Parametry
- chars
- ReadOnlySpan<Char>
Zakres zawierający zestaw znaków do zakodowania.
Zwraca
Liczba bajtów generowanych przez kodowanie określonego zakresu znaków.
Wyjątki
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 wymagany przez GetBytes program do przechowywania bajtów wynikowych, należy wywołać metodę GetByteCount . Aby obliczyć maksymalny rozmiar, 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 ArgumentException wyjątek. 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 .
Dotyczy
GetByteCount(String)
- Źródło:
- UTF8Encoding.cs
- Źródło:
- UTF8Encoding.cs
- Źródło:
- UTF8Encoding.cs
Oblicza liczbę bajtów generowanych przez kodowanie znaków w określonym Stringobiekcie .
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
Parametry
Zwraca
Liczba bajtów generowanych przez kodowanie określonych znaków.
Wyjątki
chars 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 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
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 = "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
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 ArgumentException wyjątek. 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:
- UTF8Encoding.cs
- Źródło:
- UTF8Encoding.cs
- Źródło:
- UTF8Encoding.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.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)>]
[<System.Security.SecurityCritical>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
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 (zobacz Kodowanie znaków na platformie .NET, aby uzyskać pełne wyjaśnienie).
-I-
EncoderFallback parametr jest ustawiony na EncoderExceptionFallbackwartość .
Uwagi
Aby obliczyć dokładny rozmiar tablicy wymagany przez GetBytes metodę 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 ArgumentException wyjątek. 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, Int32)
- Źródło:
- UTF8Encoding.cs
- Źródło:
- UTF8Encoding.cs
- Źródło:
- UTF8Encoding.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-
Właściwość EncoderFallback ma ustawioną wartość EncoderExceptionFallback.
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.
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
Uwagi
Aby obliczyć dokładny rozmiar tablicy wymagany przez GetBytes program do przechowywania wynikowych bajtów, należy wywołać metodę uses 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 ArgumentException wyjątek. 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 .