Encoder.GetByteCount Metoda

Definicja

W przypadku przesłonięć w klasie pochodnej oblicza liczbę bajtów pochodzących z kodowania zestawu znaków.

Przeciążenia

GetByteCount(ReadOnlySpan<Char>, Boolean)

W przypadku przesłonięć w klasie pochodnej oblicza liczbę bajtów wytwarzanych przez kodowanie zestawu znaków w span "chars". Parametr wskazuje, czy wyczyścić stan wewnętrzny kodera po obliczeniu.

GetByteCount(Char*, Int32, Boolean)

W przypadku przesłonięć w klasie pochodnej oblicza liczbę bajtów pochodzących z kodowania 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)

W przypadku przesłonięć w klasie pochodnej oblicza liczbę bajtów pochodzących z kodowania 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, GetBytes który wymaga przechowywania wynikowych bajtów, aplikacja powinna użyć . GetByteCount

Jeśli zostanie wywołana z ustawioną wartością , koder przechowuje końcowe znaki na końcu bloku danych w buforze wewnętrznym i używa ich w GetBytes flush false następnej operacji kodowania. Aplikacja powinna wywołać dla bloku danych bezpośrednio przed wywołaniem w tym samym bloku, tak aby wszystkie końcowe znaki z poprzedniego bloku zostały uwzględnione GetByteCount GetBytes w obliczeniach.

GetByteCount(ReadOnlySpan<Char>, Boolean)

W przypadku przesłonięć w klasie pochodnej oblicza liczbę bajtów wytwarzanych przez kodowanie zestawu znaków w span "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 false razie .

Zwraca

Int32

Liczba bajtów wytwarzanych przez kodowanie określonych znaków i wszystkie znaki w buforze wewnętrznym.

Dotyczy

GetByteCount(Char*, Int32, Boolean)

Ważne

Ten interfejs API nie jest zgodny ze specyfikacją CLS.

W przypadku przesłonięć w klasie pochodnej oblicza liczbę bajtów pochodzących z kodowania 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)]
public virtual int GetByteCount (char* chars, int count, bool flush);
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)>]
abstract member GetByteCount : nativeptr<char> * int * bool -> int
override this.GetByteCount : nativeptr<char> * int * bool -> int
abstract member GetByteCount : nativeptr<char> * int * bool -> int
override this.GetByteCount : nativeptr<char> * int * bool -> int
[<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

Parametry

chars
Char*

Wskaźnik do pierwszego znaku do kodowania.

count
Int32

Liczba znaków do zakodowania.

flush
Boolean

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

Zwraca

Int32

Liczba bajtów wytwarzanych przez kodowanie określonych znaków i wszystkie znaki w buforze wewnętrznym.

Atrybuty

Wyjątki

charsto null ( w Visual Basic Nothing .NET).

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

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

-and-

Fallback Jest ustawiona na EncoderExceptionFallback wartość .

Zobacz też

Dotyczy

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

W przypadku przesłonięć w klasie pochodnej oblicza liczbę bajtów pochodzących z kodowania 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 false razie .

Zwraca

Int32

Liczba bajtów wytwarzanych przez kodowanie określonych znaków i wszystkie znaki w buforze wewnętrznym.

Wyjątki

chars to null.

index wartość count lub jest mniejsza niż zero.

-lub-

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

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

-and-

Fallback Jest ustawiona na EncoderExceptionFallback wartość .

Przykłady

W poniższym przykładzie kodu pokazano, jak za pomocą metody zwrócić liczbę bajtów wymaganą do zakodowania tablicy GetByteCount znaków przy użyciu standardu Unicode Encoder .

using namespace System;
using namespace System::Text;
int main()
{
   
   // Unicode characters.
   
   // Pi
   // Sigma
   array<Char>^chars = {L'\u03a0',L'\u03a3',L'\u03a6',L'\u03a9'};
   Encoder^ uniEncoder = Encoding::Unicode->GetEncoder();
   int byteCount = uniEncoder->GetByteCount( chars, 0, chars->Length, true );
   Console::WriteLine( "{0} bytes needed to encode characters.", byteCount );
}

/* This code example produces the following output. 

8 bytes needed to encode characters.

*/
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