UTF8Encoding.GetMaxByteCount(Int32) 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 maksymalną liczbę bajtów generowanych przez kodowanie określonej liczby znaków.
public:
override int GetMaxByteCount(int charCount);
public override int GetMaxByteCount (int charCount);
override this.GetMaxByteCount : int -> int
Public Overrides Function GetMaxByteCount (charCount As Integer) As Integer
Parametry
- charCount
- Int32
Liczba znaków do kodowania.
Zwraca
Maksymalna liczba bajtów generowanych przez kodowanie określonej liczby znaków.
Wyjątki
Parametr charCount
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ą.
Wystąpił rezerwowy (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)
-I-
EncoderFallback jest ustawiona na EncoderExceptionFallbackwartość .
Przykłady
W poniższym przykładzie użyto metody , GetMaxByteCount aby zwrócić maksymalną liczbę bajtów wymaganych do zakodowania określonej liczby znaków.
using namespace System;
using namespace System::Text;
int main()
{
UTF8Encoding^ utf8 = gcnew UTF8Encoding;
int charCount = 2;
int maxByteCount = utf8->GetMaxByteCount( charCount );
Console::WriteLine( "Maximum of {0} bytes needed to encode {1} characters.", maxByteCount, charCount );
}
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
UTF8Encoding utf8 = new UTF8Encoding();
int charCount = 2;
int maxByteCount = utf8.GetMaxByteCount(charCount);
Console.WriteLine(
"Maximum of {0} bytes needed to encode {1} characters.",
maxByteCount,
charCount
);
}
}
Imports System.Text
Class UTF8EncodingExample
Public Shared Sub Main()
Dim utf8 As New UTF8Encoding()
Dim charCount As Integer = 2
Dim maxByteCount As Integer = utf8.GetMaxByteCount(charCount)
Console.WriteLine( _
"Maximum of {0} bytes needed to encode {1} characters.", _
maxByteCount, _
charCount _
)
End Sub
End Class
Uwagi
Aby obliczyć dokładny rozmiar tablicy wymagany przez GetBytes do przechowywania wynikowych bajtów, należy wywołać metodę GetByteCount . Aby obliczyć maksymalny rozmiar tablicy, należy wywołać metodę GetMaxByteCount . Metoda GetByteCount zazwyczaj przydziela mniej pamięci, podczas gdy GetMaxByteCount metoda zwykle wykonuje się szybciej.
GetMaxByteCount jest najgorszym numerem, w tym najgorszym przypadkiem dla aktualnie wybranego EncoderFallbackelementu . Jeśli opcja rezerwowa zostanie wybrana z potencjalnie dużym ciągiem, GetMaxByteCount może zwrócić duże wartości.
W większości przypadków ta metoda zwraca rozsądne liczby dla małych ciągów. W przypadku dużych ciągów może być konieczne wybranie między użyciem bardzo dużych buforów a błędami przechwytywania w rzadkich przypadkach przekroczenia bardziej rozsądnego buforu. Warto również rozważyć inne podejście przy użyciu metody GetByteCount lub Encoder.Convert. Na przykład tekst w języku angielskim i wielu innych językach często wymaga tylko jednego bajtu UTF-8, aby reprezentować znak, ale liczba zwrócona przez GetMaxByteCount musi pozwolić na możliwość konwersji ciągu będzie składać się całkowicie z znaków, które każdy z nich wymaga czterech bajtów.
GetMaxByteCount nie ma relacji z GetChars. Jeśli aplikacja potrzebuje podobnej funkcji do użycia z GetCharsprogramem , powinna użyć polecenia GetMaxCharCount.
Uwaga
GetMaxByteCount(N)
niekoniecznie jest taką samą wartością jak N* GetMaxByteCount(1)
.