ASCIIEncoding.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.
Dekoduje sekwencję bajtów do zestawu znaków.
Przeciążenia
GetChars(ReadOnlySpan<Byte>, Span<Char>) |
Dekoduje określony zakres bajtów do określonego zakresu znaków. |
GetChars(Byte*, Int32, Char*, Int32) |
Dekoduje sekwencję bajtów rozpoczynającą się od określonego wskaźnika bajtów do zestawu znaków przechowywanych w określonym wskaźniku znaków. |
GetChars(Byte[], Int32, Int32, Char[], Int32) |
Dekoduje sekwencję bajtów z określonej tablicy bajtów do określonej tablicy znaków. |
GetChars(ReadOnlySpan<Byte>, Span<Char>)
Dekoduje określony zakres bajtów do określonego zakresu znaków.
public:
override int GetChars(ReadOnlySpan<System::Byte> bytes, Span<char> chars);
public override int GetChars (ReadOnlySpan<byte> bytes, Span<char> chars);
override this.GetChars : ReadOnlySpan<byte> * Span<char> -> int
Public Overrides Function GetChars (bytes As ReadOnlySpan(Of Byte), chars As Span(Of Char)) As Integer
Parametry
- bytes
- ReadOnlySpan<Byte>
Zakres zawierający bajty do dekodowania.
Zwraca
Rzeczywista liczba znaków zapisanych w pliku chars
.
Uwagi
Aby obliczyć dokładny rozmiar wymagany przez GetChars program do przechowywania wynikowych znaków, użyj polecenia GetCharCount. Aby obliczyć maksymalny rozmiar, użyj polecenia GetMaxCharCount. Metoda GetCharCount zwykle zezwala na alokację mniejszej ilości pamięci, podczas gdy GetMaxCharCount metoda zwykle wykonuje się szybciej.
Dane, które mają być konwertowane, takie jak dane odczytywane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych. W takim przypadku lub jeśli ilość danych jest tak duża, że należy podzielić je na mniejsze bloki, należy użyć Decoder odpowiednio metody lub Encoder dostarczonej GetDecoder przez metodę lub GetEncoder metodę.
ASCIIEncoding nie zapewnia wykrywania błędów. Każdy bajt większy niż szesnastkowy 0x7F
jest zdekodowany jako znak zapytania Unicode ("?").
Przestroga
Ze względów bezpieczeństwa należy użyć funkcji UTF8Encoding, UnicodeEncodinglub UTF32Encoding i włączyć wykrywanie błędów.
Dotyczy
GetChars(Byte*, Int32, Char*, Int32)
Ważne
Ten interfejs API nie jest zgodny ze specyfikacją CLS.
- Alternatywa zgodna ze specyfikacją CLS
- System.Text.ASCIIEncoding.GetChars(Byte[], Int32, Int32, Char[], Int32)
Dekoduje sekwencję bajtów rozpoczynającą się od określonego wskaźnika bajtów do zestawu znaków przechowywanych w określonym wskaźniku znaków.
public:
override int GetChars(System::Byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> 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.
Zwraca
Rzeczywista liczba znaków zapisanych w lokalizacji wskazanej przez chars
.
- 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- DecoderFallback parametr jest ustawiony na DecoderExceptionFallbackwartość .
Uwagi
Aby obliczyć dokładny rozmiar tablicy wymagany przez GetChars program do przechowywania znaków wynikowych, aplikacja używa elementu GetCharCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna używać polecenia GetMaxCharCount. Metoda GetCharCount zwykle zezwala na alokację mniejszej ilości pamięci, podczas gdy GetMaxCharCount metoda zwykle wykonuje się szybciej.
Dane, które mają być konwertowane, takie jak dane odczytywane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych. W takim przypadku lub jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, aplikacja powinna używać Decoder wartości lub dostarczonej GetDecoder przez metodę lub Encoder GetEncoder metodę.
ASCIIEncoding nie zapewnia wykrywania błędów. Każdy bajt większy niż szesnastkowy 0x7F jest zdekodowany jako znak zapytania Unicode ("?").
Przestroga
Ze względów bezpieczeństwa zaleca się korzystanie z UTF8Encodingaplikacji , UnicodeEncodinglub UTF32Encoding i włączanie wykrywania błędów.
Zobacz też
- GetCharCount(Byte[], Int32, Int32)
- GetMaxCharCount(Int32)
- GetDecoder()
- GetString(Byte[], Int32, Int32)
Dotyczy
GetChars(Byte[], Int32, Int32, Char[], Int32)
Dekoduje sekwencję bajtów z określonej tablicy bajtów do określonej tablicy znaków.
public:
override int GetChars(cli::array <System::Byte> ^ bytes, int byteIndex, int byteCount, cli::array <char> ^ chars, int charIndex);
public override int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex);
override this.GetChars : byte[] * int * int * char[] * int -> int
Public Overrides 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- DecoderFallback parametr jest ustawiony na DecoderExceptionFallbackwartość .
Przykłady
W poniższym przykładzie pokazano, jak zdekodować zakres elementów z tablicy bajtów i zapisać wynik w zestawie elementów w tablicy znaków Unicode.
using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
array<Char>^chars;
array<Byte>^bytes = {65,83,67,73,73,32,69,110,99,111,100,105,110,103,32,69,120,97,109,112,108,101};
ASCIIEncoding^ ascii = gcnew ASCIIEncoding;
int charCount = ascii->GetCharCount( bytes, 6, 8 );
chars = gcnew array<Char>(charCount);
int charsDecodedCount = ascii->GetChars( bytes, 6, 8, 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();
}
using System;
using System.Text;
class ASCIIEncodingExample {
public static void Main() {
Char[] chars;
Byte[] bytes = new Byte[] {
65, 83, 67, 73, 73, 32, 69,
110, 99, 111, 100, 105, 110, 103,
32, 69, 120, 97, 109, 112, 108, 101
};
ASCIIEncoding ascii = new ASCIIEncoding();
int charCount = ascii.GetCharCount(bytes, 6, 8);
chars = new Char[charCount];
int charsDecodedCount = ascii.GetChars(bytes, 6, 8, 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();
}
}
Imports System.Text
Class ASCIIEncodingExample
Public Shared Sub Main()
Dim chars() As Char
Dim bytes() As Byte = { _
65, 83, 67, 73, 73, 32, 69, _
110, 99, 111, 100, 105, 110, 103, _
32, 69, 120, 97, 109, 112, 108, 101}
Dim ascii As New ASCIIEncoding()
Dim charCount As Integer = ascii.GetCharCount(bytes, 6, 8)
chars = New Char(charCount - 1) {}
Dim charsDecodedCount As Integer = ascii.GetChars(bytes, 6, 8, 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
Uwagi
Aby obliczyć dokładny rozmiar tablicy wymagany przez GetChars program do przechowywania znaków wynikowych, aplikacja używa elementu GetCharCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna używać polecenia GetMaxCharCount. Metoda GetCharCount zwykle zezwala na alokację mniejszej ilości pamięci, podczas gdy GetMaxCharCount metoda zwykle wykonuje się szybciej.
Dane, które mają być konwertowane, takie jak dane odczytywane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych. W takim przypadku lub jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, aplikacja powinna używać Decoder wartości lub dostarczonej GetDecoder przez metodę lub Encoder GetEncoder metodę.
ASCIIEncoding nie zapewnia wykrywania błędów. Każdy bajt większy niż szesnastkowy 0x7F jest zdekodowany jako znak zapytania Unicode ("?").
Przestroga
Ze względów bezpieczeństwa zaleca się korzystanie z UTF8Encodingaplikacji , UnicodeEncodinglub UTF32Encoding i włączanie wykrywania błędów.
Zobacz też
- GetCharCount(Byte[], Int32, Int32)
- GetMaxCharCount(Int32)
- GetDecoder()
- GetString(Byte[], Int32, Int32)