Decoder.GetChars Metoda

Definicja

Po przesłonięciu w klasie pochodnej sekwencja bajtów jest dekodowana do zestawu znaków.

Przeciążenia

GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean)

Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów rozpiętości i wszystkich bajtów w buforze wewnętrznym do zestawu znaków, które są przechowywane począwszy od określonego wskaźnika znaku. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po konwersji.

GetChars(Byte*, Int32, Char*, Int32, Boolean)

Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów rozpoczynających się od określonego wskaźnika bajtów i wszystkich bajtów w buforze wewnętrznym do zestawu znaków przechowywanych od określonego wskaźnika znaku. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po konwersji.

GetChars(Byte[], Int32, Int32, Char[], Int32)

Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów i wszystkie bajty w buforze wewnętrznym do określonej tablicy znaków.

GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean)

Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów i wszystkie bajty w buforze wewnętrznym do określonej tablicy znaków. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po konwersji.

GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean)

Źródło:
Decoder.cs
Źródło:
Decoder.cs
Źródło:
Decoder.cs

Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów rozpiętości i wszystkich bajtów w buforze wewnętrznym do zestawu znaków, które są przechowywane począwszy od określonego wskaźnika znaku. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po konwersji.

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

Parametry

bytes
ReadOnlySpan<Byte>

Zakres bajtów do dekodowania.

chars
Span<Char>

Zakres do zapisania wynikowego zestawu znaków.

flush
Boolean

true w celu wyczyszczenia stanu wewnętrznego dekodera po konwersji; w przeciwnym razie , false.

Zwraca

Rzeczywista liczba znaków zapisanych w przedziale wskazanym przez chars parametr .

Uwagi

Pamiętaj, że Decoder obiekt zapisuje stan między wywołaniami funkcji GetChars. Po zakończeniu działania aplikacji ze strumieniem danych należy ustawić flush parametr , aby true upewnić się, że informacje o stanie są opróżniane. Dzięki temu ustawieniu dekoder ignoruje nieprawidłowe bajty na końcu bloku danych i czyści bufor wewnętrzny.

Aby obliczyć dokładny rozmiar zakresu, który GetChars wymaga przechowywania znaków wynikowych, aplikacja powinna używać polecenia GetCharCount.

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

Jeśli aplikacja ma konwertować wiele segmentów strumienia wejściowego, rozważ użycie Convert metody . GetChars Zgłosi wyjątek, jeśli zakres danych wyjściowych nie jest wystarczająco duży, ale Convert wypełni jak najwięcej miejsca i zwróci zapisane bajty odczytu i znaków, pod warunkiem, że tablica wyjściowa zezwala na co najmniej dwa znaki. Zobacz też temat, Encoding.GetChars aby uzyskać więcej komentarzy.

Dotyczy

GetChars(Byte*, Int32, Char*, Int32, Boolean)

Źródło:
Decoder.cs
Źródło:
Decoder.cs
Źródło:
Decoder.cs

Ważne

Ten interfejs API nie jest zgodny ze specyfikacją CLS.

Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów rozpoczynających się od określonego wskaźnika bajtów i wszystkich bajtów w buforze wewnętrznym do zestawu znaków przechowywanych od określonego wskaźnika znaku. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po konwersji.

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

Parametry

bytes
Byte*

Wskaźnik do pierwszego bajtu w celu dekodowania.

byteCount
Int32

Liczba bajtów do dekodowania.

chars
Char*

Wskaźnik do lokalizacji, w której należy rozpocząć pisanie wynikowego zestawu znaków.

charCount
Int32

Maksymalna liczba znaków do zapisania.

flush
Boolean

true w celu wyczyszczenia stanu wewnętrznego dekodera po konwersji; w przeciwnym razie , false.

Zwraca

Rzeczywista liczba znaków zapisanych w lokalizacji wskazanej chars przez parametr .

Atrybuty

Wyjątki

bytes is null (Nothing).

-lub-

chars is null (Nothing).

byteCount wartość lub charCount jest mniejsza niż zero.

charCount jest mniejsza niż wynikowa liczba znaków.

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

-I-

Fallback parametr jest ustawiony na DecoderExceptionFallbackwartość .

Uwagi

Pamiętaj, że Decoder obiekt zapisuje stan między wywołaniami funkcji GetChars. Po zakończeniu działania aplikacji ze strumieniem danych należy ustawić flush parametr , aby true upewnić się, że informacje o stanie są opróżniane. Dzięki temu ustawieniu dekoder ignoruje nieprawidłowe bajty na końcu bloku danych i czyści bufor wewnętrzny.

Aby obliczyć dokładny rozmiar buforu, który GetChars wymaga przechowywania znaków wynikowych, aplikacja powinna używać polecenia GetCharCount.

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

Jeśli aplikacja ma konwertować wiele segmentów strumienia wejściowego, rozważ użycie Convert metody . GetChars Zgłosi wyjątek, jeśli bufor wyjściowy nie jest wystarczająco duży, ale Convert wypełni jak najwięcej miejsca i zwróci zapisane bajty odczytu i znaków, pod warunkiem, że tablica wyjściowa zezwala na co najmniej dwa znaki. Zobacz też temat, Encoding.GetChars aby uzyskać więcej komentarzy.

Zobacz też

Dotyczy

GetChars(Byte[], Int32, Int32, Char[], Int32)

Źródło:
Decoder.cs
Źródło:
Decoder.cs
Źródło:
Decoder.cs

Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów i wszystkie bajty w buforze wewnętrznym do określonej tablicy znaków.

public:
 abstract int GetChars(cli::array <System::Byte> ^ bytes, int byteIndex, int byteCount, cli::array <char> ^ chars, int charIndex);
public abstract int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex);
abstract member GetChars : byte[] * int * int * char[] * int -> int
Public MustOverride Function GetChars (bytes As Byte(), byteIndex As Integer, byteCount As Integer, chars As Char(), charIndex As Integer) As Integer

Parametry

bytes
Byte[]

Tablica bajtów zawierająca sekwencję bajtów do dekodowania.

byteIndex
Int32

Indeks pierwszego bajtu do dekodowania.

byteCount
Int32

Liczba bajtów do dekodowania.

chars
Char[]

Tablica znaków zawierająca wynikowy zestaw znaków.

charIndex
Int32

Indeks, w którym należy rozpocząć pisanie wynikowego zestawu znaków.

Zwraca

Rzeczywista liczba znaków zapisanych w pliku chars.

Wyjątki

bytes is null (Nothing).

-lub-

chars is null (Nothing).

byteIndex lub byteCountcharIndex jest mniejsza niż zero.

-lub-

byteindex i byteCount nie oznaczają prawidłowego zakresu w elemecie bytes.

-lub-

charIndex nie jest prawidłowym indeksem w pliku chars.

chars nie ma wystarczającej pojemności od charIndex do końca tablicy, aby pomieścić wynikowe znaki.

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

-I-

Fallback parametr jest ustawiony na DecoderExceptionFallbackwartość .

Przykłady

W poniższym przykładzie pokazano, jak dekodować zakres elementów z tablicy bajtów i przechowywać je w tablicy znaków Unicode. Metoda GetCharCount służy do obliczania liczby znaków potrzebnych do przechowywania zdekodowanych elementów w tablicy bytes. Metoda GetChars dekoduje określone elementy w tablicy bajtów i przechowuje je w nowej tablicy znaków.

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Char>^chars;
   array<Byte>^bytes = {85,0,110,0,105,0,99,0,111,0,100,0,101,0};
   Decoder^ uniDecoder = Encoding::Unicode->GetDecoder();
   int charCount = uniDecoder->GetCharCount( bytes, 0, bytes->Length );
   chars = gcnew array<Char>(charCount);
   int charsDecodedCount = uniDecoder->GetChars( bytes, 0, bytes->Length, chars, 0 );
   Console::WriteLine( "{0} characters used to decode bytes.", charsDecodedCount );
   Console::Write( "Decoded chars: " );
   IEnumerator^ myEnum = chars->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Char c = safe_cast<Char>(myEnum->Current);
      Console::Write( "[{0}]", c.ToString() );
   }

   Console::WriteLine();
}

/* This code example produces the following output.

7 characters used to decode bytes.
Decoded chars: [U][n][i][c][o][d][e]

*/
using System;
using System.Text;

class UnicodeEncodingExample {
    public static void Main() {
        Char[] chars;
        Byte[] bytes = new Byte[] {
            85, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0
        };

        Decoder uniDecoder = Encoding.Unicode.GetDecoder();

        int charCount = uniDecoder.GetCharCount(bytes, 0, bytes.Length);
        chars = new Char[charCount];
        int charsDecodedCount = uniDecoder.GetChars(bytes, 0, bytes.Length, chars, 0);

        Console.WriteLine(
            "{0} characters used to decode bytes.", charsDecodedCount
        );

        Console.Write("Decoded chars: ");
        foreach (Char c in chars) {
            Console.Write("[{0}]", c);
        }
        Console.WriteLine();
    }
}

/* This code example produces the following output.

7 characters used to decode bytes.
Decoded chars: [U][n][i][c][o][d][e]

*/
Imports System.Text

Class UnicodeEncodingExample
    
    Public Shared Sub Main()
        Dim chars() As Char
        Dim bytes() As Byte = { _
            85, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0 _
        }
        
        Dim uniDecoder As Decoder = Encoding.Unicode.GetDecoder()
        
        Dim charCount As Integer = uniDecoder.GetCharCount(bytes, 0, bytes.Length)
        chars = New Char(charCount - 1) {}
        Dim charsDecodedCount As Integer = _
            uniDecoder.GetChars(bytes, 0, bytes.Length, chars, 0)
        
        Console.WriteLine( _
            "{0} characters used to decode bytes.", _
            charsDecodedCount _
        )
        
        Console.Write("Decoded chars: ")
        Dim c As Char
        For Each c In  chars
            Console.Write("[{0}]", c)
        Next c
        Console.WriteLine()
    End Sub
End Class

'This code example produces the following output.
'
'7 characters used to decode bytes.
'Decoded chars: [U][n][i][c][o][d][e]
'

Uwagi

Pamiętaj, że Decoder obiekt zapisuje stan między wywołaniami funkcji GetChars. Po zakończeniu działania aplikacji ze strumieniem danych należy ustawić flush parametr , aby true upewnić się, że informacje o stanie są opróżniane. Dzięki temu ustawieniu dekoder ignoruje nieprawidłowe bajty na końcu bloku danych i czyści bufor wewnętrzny.

Aby obliczyć dokładny rozmiar tablicy, który GetChars wymaga przechowywania znaków wynikowych, aplikacja powinna używać elementu GetCharCount.

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

Jeśli aplikacja ma konwertować wiele segmentów strumienia wejściowego, rozważ użycie Convert metody . GetChars Zgłosi wyjątek, jeśli bufor wyjściowy nie jest wystarczająco duży, ale Convert wypełni jak najwięcej miejsca i zwróci zapisane bajty odczytu i znaków, pod warunkiem, że tablica wyjściowa zezwala na co najmniej dwa znaki. Zobacz też temat, Encoding.GetChars aby uzyskać więcej komentarzy.

Zobacz też

Dotyczy

GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean)

Źródło:
Decoder.cs
Źródło:
Decoder.cs
Źródło:
Decoder.cs

W przypadku zastąpienia w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów i wszelkie bajty w buforze wewnętrznym do określonej tablicy znaków. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po konwersji.

public:
 virtual int GetChars(cli::array <System::Byte> ^ bytes, int byteIndex, int byteCount, cli::array <char> ^ chars, int charIndex, bool flush);
public virtual int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex, bool flush);
abstract member GetChars : byte[] * int * int * char[] * int * bool -> int
override this.GetChars : byte[] * int * int * char[] * int * bool -> int
Public Overridable Function GetChars (bytes As Byte(), byteIndex As Integer, byteCount As Integer, chars As Char(), charIndex As Integer, flush As Boolean) As Integer

Parametry

bytes
Byte[]

Tablica bajtów zawierająca sekwencję bajtów do dekodowania.

byteIndex
Int32

Indeks pierwszego bajtu do dekodowania.

byteCount
Int32

Liczba bajtów do dekodowania.

chars
Char[]

Tablica znaków zawierająca wynikowy zestaw znaków.

charIndex
Int32

Indeks, na którym rozpocznie się pisanie wynikowego zestawu znaków.

flush
Boolean

true w celu wyczyszczenia wewnętrznego stanu dekodera po konwersji; w przeciwnym razie , false.

Zwraca

Rzeczywista liczba znaków zapisanych w parametrze chars .

Wyjątki

bytes is null (Nothing).

-lub-

chars is null (Nothing).

byteIndex lub byteCountcharIndex jest mniejsza niż zero.

-lub-

byteindex i byteCount nie oznaczają prawidłowego zakresu w elemecie bytes.

-lub-

charIndex nie jest prawidłowym indeksem w pliku chars.

chars nie ma wystarczającej pojemności od charIndex do końca tablicy, aby pomieścić wynikowe znaki.

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

-I-

Fallback jest ustawiona na DecoderExceptionFallbackwartość .

Uwagi

Pamiętaj, że Decoder obiekt zapisuje stan między wywołaniami polecenia GetChars. Po zakończeniu działania aplikacji ze strumieniem danych należy ustawić flushtrue parametr , aby upewnić się, że informacje o stanie są opróżniane. Dzięki temu ustawieniu dekoder ignoruje nieprawidłowe bajty na końcu bloku danych i czyści wewnętrzny bufor.

Aby obliczyć dokładny rozmiar tablicy, który GetChars wymaga przechowywania wynikowych znaków, aplikacja powinna używać polecenia GetCharCount.

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

Jeśli aplikacja ma przekonwertować wiele segmentów strumienia wejściowego, rozważ użycie Convert metody . GetChars zgłosi wyjątek, jeśli bufor wyjściowy nie jest wystarczająco duży, ale Convert wypełni jak najwięcej miejsca i zwróci zapisane bajty odczytu i znaków, pod warunkiem, że tablica wyjściowa zezwala na co najmniej dwa znaki. Zobacz również temat, Encoding.GetChars aby uzyskać więcej komentarzy.

Zobacz też

Dotyczy