Decoder.GetChars 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.
Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów 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.
- 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ą flush
false
, 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 przekonwertować 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
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ą flush
false
, 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 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 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
byteIndex
lub byteCount
charIndex
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ą flush
false
, 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 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 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
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.
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, w którym należy rozpocząć pisanie 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 parametrze chars
.
Wyjątki
byteIndex
lub byteCount
charIndex
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ść .
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ą flush
false
, 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 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 też temat, Encoding.GetChars aby uzyskać więcej komentarzy.