Encoder.GetByteCount Metoda

Definicja

Po zastąpieniu w klasie pochodnej oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków.

Przeciążenia

Nazwa Opis
GetByteCount(ReadOnlySpan<Char>, Boolean)

Po zastąpieniu w klasie pochodnej oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków w zakresie "chars". Parametr wskazuje, czy wyczyścić stan wewnętrzny kodera po obliczeniu.

GetByteCount(Char*, Int32, Boolean)

Po zastąpieniu w klasie pochodnej oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków rozpoczynających się od określonego wskaźnika znaków. Parametr wskazuje, czy wyczyścić stan wewnętrzny kodera po obliczeniu.

GetByteCount(Char[], Int32, Int32, Boolean)

Po zastąpieniu w klasie pochodnej oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków z określonej tablicy znaków. Parametr wskazuje, czy wyczyścić stan wewnętrzny kodera po obliczeniu.

Uwagi

Ta metoda nie ma wpływu na stan kodera.

Aby obliczyć dokładny rozmiar tablicy, który GetBytes wymaga przechowywania wynikowych bajtów, aplikacja powinna użyć polecenia GetByteCount.

Jeśli GetBytes jest wywoływana z ustawioną wartością flushfalse, koder przechowuje końcowe znaki na końcu bloku danych w buforze wewnętrznym i używa ich w następnej operacji kodowania. Aplikacja powinna wywołać GetByteCount blok danych bezpośrednio przed wywołaniem GetBytes tego samego bloku, aby wszystkie końcowe znaki z poprzedniego bloku były uwzględniane w obliczeniach.

GetByteCount(ReadOnlySpan<Char>, Boolean)

Po zastąpieniu w klasie pochodnej oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków w zakresie "chars". Parametr wskazuje, czy wyczyścić stan wewnętrzny kodera po obliczeniu.

public:
 virtual int GetByteCount(ReadOnlySpan<char> chars, bool flush);
public virtual int GetByteCount(ReadOnlySpan<char> chars, bool flush);
abstract member GetByteCount : ReadOnlySpan<char> * bool -> int
override this.GetByteCount : ReadOnlySpan<char> * bool -> int
Public Overridable Function GetByteCount (chars As ReadOnlySpan(Of Char), flush As Boolean) As Integer

Parametry

chars
ReadOnlySpan<Char>

Zakres znaków do kodowania.

flush
Boolean

true symulowanie czyszczenia stanu wewnętrznego kodera po obliczeniu; w przeciwnym razie, false.

Zwraca

Liczba bajtów generowanych przez kodowanie określonych znaków i wszystkich znaków w buforze wewnętrznym.

Dotyczy

GetByteCount(Char*, Int32, Boolean)

Ważne

Ten interfejs API nie jest zgodny ze specyfikacją CLS.

Po zastąpieniu w klasie pochodnej oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków rozpoczynających się od określonego wskaźnika znaków. Parametr wskazuje, czy wyczyścić stan wewnętrzny kodera po obliczeniu.

public:
 virtual int GetByteCount(char* chars, int count, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetByteCount(char* chars, int count, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public virtual int GetByteCount(char* chars, int count, bool flush);
[System.CLSCompliant(false)]
public virtual int GetByteCount(char* chars, int count, bool flush);
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member GetByteCount : nativeptr<char> * int * bool -> int
override this.GetByteCount : nativeptr<char> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
[<System.Security.SecurityCritical>]
abstract member GetByteCount : nativeptr<char> * int * bool -> int
override this.GetByteCount : nativeptr<char> * int * bool -> int
[<System.CLSCompliant(false)>]
abstract member GetByteCount : nativeptr<char> * int * bool -> int
override this.GetByteCount : nativeptr<char> * int * bool -> int

Parametry

chars
Char*

Wskaźnik do pierwszego znaku w celu zakodowania.

count
Int32

Liczba znaków do zakodowania.

flush
Boolean

true symulowanie czyszczenia stanu wewnętrznego kodera po obliczeniu; w przeciwnym razie, false.

Zwraca

Liczba bajtów generowanych przez kodowanie określonych znaków i wszystkich znaków w buforze wewnętrznym.

Atrybuty

Wyjątki

chars jest null (Nothing w Visual Basic .NET).

Parametr count ma wartość niższą niż zero.

Wystąpił powrót (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)

— i —

Fallback jest ustawiony na EncoderExceptionFallback.

Zobacz też

Dotyczy

GetByteCount(Char[], Int32, Int32, Boolean)

Po zastąpieniu w klasie pochodnej oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków z określonej tablicy znaków. Parametr wskazuje, czy wyczyścić stan wewnętrzny kodera po obliczeniu.

public:
 abstract int GetByteCount(cli::array <char> ^ chars, int index, int count, bool flush);
public abstract int GetByteCount(char[] chars, int index, int count, bool flush);
abstract member GetByteCount : char[] * int * int * bool -> int
Public MustOverride Function GetByteCount (chars As Char(), index As Integer, count As Integer, flush As Boolean) 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.

flush
Boolean

true symulowanie czyszczenia stanu wewnętrznego kodera po obliczeniu; w przeciwnym razie, false.

Zwraca

Liczba bajtów generowanych przez kodowanie określonych znaków i wszystkich znaków w buforze wewnętrznym.

Wyjątki

Parametr chars ma wartość null.

index lub count jest mniejsza niż zero.

— lub —

index i count nie oznaczają prawidłowego zakresu w elem chars.

Wystąpił powrót (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)

— i —

Fallback jest ustawiony na EncoderExceptionFallback.

Przykłady

Poniższy przykład kodu przedstawia sposób użycia GetByteCount metody w celu zwrócenia liczby bajtów wymaganych do zakodowania tablicy znaków przy użyciu formatu Unicode Encoder.

using System;
using System.Text;

class EncoderExample {
    public static void Main() {
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };

        Encoder uniEncoder = Encoding.Unicode.GetEncoder();
        int byteCount = uniEncoder.GetByteCount(chars, 0, chars.Length, true);
        Console.WriteLine(
            "{0} bytes needed to encode characters.", byteCount
        );
    }
}

/* This example produces the following output.

8 bytes needed to encode characters.

*/
Imports System.Text
Imports Microsoft.VisualBasic.Strings

Class EncoderExample
    
    Public Shared Sub Main()
        ' Unicode characters.
        ' ChrW(35)  = #
        ' ChrW(37)  = %
        ' ChrW(928) = Pi
        ' ChrW(931) = Sigma
        Dim chars() As Char = {ChrW(35), ChrW(37), ChrW(928), ChrW(931)}
        
        Dim uniEncoder As Encoder = Encoding.Unicode.GetEncoder()
        Dim byteCount As Integer = _
            uniEncoder.GetByteCount(chars, 0, chars.Length, True)
        Console.WriteLine("{0} bytes needed to encode characters.", byteCount)
    End Sub
End Class
'
'This example produces the following output.
'
'8 bytes needed to encode characters.
'

Zobacz też

Dotyczy