ASCIIEncoding.GetChars Metoda

Definicja

Dekoduje sekwencję bajtów do zestawu znaków.Decodes a sequence of bytes into a set of characters.

Przeciążenia

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

Dekoduje określony zakres bajtów do określonego zakresu znaków.Decodes the specified byte span into the specified character span.

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

Dekoduje sekwencję bajtów rozpoczynającą się od określonego wskaźnika Byte do zestawu znaków, które są przechowywane, zaczynając od określonego wskaźnika znakowego.Decodes a sequence of bytes starting at the specified byte pointer into a set of characters that are stored starting at the specified character pointer.

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

Dekoduje sekwencję bajtów z określonej tablicy bajtów do określonej tablicy znaków.Decodes a sequence of bytes from the specified byte array into the specified character array.

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

Dekoduje określony zakres bajtów do określonego zakresu znaków.Decodes the specified byte span into the specified character span.

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 zdekodowania.The span containing the bytes to decode.

chars
Span<Char>

Zakres, który zawiera zestaw znaków.The span to contain the resulting set of characters.

Zwraca

Int32

Rzeczywista liczba znaków do zapisania chars .The actual number of characters written into chars.

Uwagi

Aby obliczyć dokładny rozmiar wymagany przez GetChars program do przechowywania wyników, użyj GetCharCount .To calculate the exact size required by GetChars to store the resulting characters, use GetCharCount. Aby obliczyć maksymalny rozmiar, użyj GetMaxCharCount .To calculate the maximum size, use GetMaxCharCount. GetCharCountMetoda ogólnie zezwala na przydzielanie mniejszej ilości pamięci, podczas gdy GetMaxCharCount metoda zazwyczaj wykonuje się szybciej.The GetCharCount method generally allows allocation of less memory, while the GetMaxCharCount method generally executes faster.

Dane do przekonwertowania, takie jak dane odczytane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych.Data to be converted, such as data read from a stream, can be available only in sequential blocks. W tym przypadku, lub, jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, należy użyć Decoder lub Encoder odpowiednio do GetDecoder metody lub GetEncoder metody.In this case, or if the amount of data is so large that it needs to be divided into smaller blocks, you should use the Decoder or the Encoder provided by the GetDecoder method or the GetEncoder method, respectively.

ASCIIEncoding nie zapewnia wykrywania błędów.ASCIIEncoding does not provide error detection. Każdy bajt większy niż szesnastkowy 0x7F jest zdekodowany jako znak zapytania Unicode ("?").Any byte greater than hexadecimal 0x7F is decoded as the Unicode question mark ("?").

Przestroga

Ze względów bezpieczeństwa należy używać UTF8Encoding , UnicodeEncoding lub UTF32Encoding i włączać wykrywanie błędów.For security reasons, you should use UTF8Encoding, UnicodeEncoding, or UTF32Encoding and enable error detection.

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 Byte do zestawu znaków, które są przechowywane, zaczynając od określonego wskaźnika znakowego.Decodes a sequence of bytes starting at the specified byte pointer into a set of characters that are stored starting at the specified character pointer.

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);
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
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 do zdekodowania.A pointer to the first byte to decode.

byteCount
Int32

Liczba bajtów do zdekodowania.The number of bytes to decode.

chars
Char*

Wskaźnik do lokalizacji, w której ma zostać rozpoczęte pisanie zestawu znaków.A pointer to the location at which to start writing the resulting set of characters.

charCount
Int32

Maksymalna liczba znaków do zapisania.The maximum number of characters to write.

Zwraca

Int32

Rzeczywista liczba znaków zapisywana w lokalizacji wskazywanej przez chars .The actual number of characters written at the location indicated by chars.

Atrybuty

Wyjątki

bytes to null.bytes is null.

-lub--or- chars to null.chars is null.

byteCount lub charCount jest mniejsza od zera.byteCount or charCount is less than zero.

charCount jest mniejsza niż liczba znaków będących wynikiem.charCount is less than the resulting number of characters.

Wystąpiła rezerwa (Aby uzyskać więcej informacji, zobacz kodowanie znaków w programie .NET).A fallback occurred (for more information, see Character Encoding in .NET) lub-and- DecoderFallback jest ustawiony na DecoderExceptionFallback .DecoderFallback is set to DecoderExceptionFallback.

Uwagi

Aby obliczyć dokładny rozmiar tablicy wymagany przez GetChars program do przechowywania wyników, aplikacja używa GetCharCount .To calculate the exact array size required by GetChars to store the resulting characters, the application uses GetCharCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna używać GetMaxCharCount .To calculate the maximum array size, the application should use GetMaxCharCount. GetCharCountMetoda ogólnie zezwala na przydzielanie mniejszej ilości pamięci, podczas gdy GetMaxCharCount metoda zazwyczaj wykonuje się szybciej.The GetCharCount method generally allows allocation of less memory, while the GetMaxCharCount method generally executes faster.

Dane do przekonwertowania, takie jak dane odczytane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych.Data to be converted, such as data read from a stream, can be available only in sequential blocks. W tym przypadku lub, jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, aplikacja powinna używać lub odpowiednio do metody Decoder Encoder GetDecoder lub GetEncoder metody.In this case, or if the amount of data is so large that it needs to be divided into smaller blocks, the application should use the Decoder or the Encoder provided by the GetDecoder method or the GetEncoder method, respectively.

ASCIIEncoding nie zapewnia wykrywania błędów.ASCIIEncoding does not provide error detection. Każdy bajt większy niż szesnastkowy 0x7F jest zdekodowany jako znak zapytania Unicode ("?").Any byte greater than hexadecimal 0x7F is decoded as the Unicode question mark ("?").

Przestroga

Ze względów bezpieczeństwa zalecane jest użycie UTF8Encoding , UnicodeEncoding , lub UTF32Encoding i włączenie wykrywania błędów.For security reasons, your application is recommended to use UTF8Encoding, UnicodeEncoding, or UTF32Encoding and enable error detection.

Zobacz też

Dotyczy

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

Dekoduje sekwencję bajtów z określonej tablicy bajtów do określonej tablicy znaków.Decodes a sequence of bytes from the specified byte array into the specified character array.

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 bajtowa zawierająca sekwencję bajtów do zdekodowania.The byte array containing the sequence of bytes to decode.

byteIndex
Int32

Indeks pierwszego bajtu do zdekodowania.The index of the first byte to decode.

byteCount
Int32

Liczba bajtów do zdekodowania.The number of bytes to decode.

chars
Char[]

Tablica znaków, która będzie zawierać zestaw znaków.The character array to contain the resulting set of characters.

charIndex
Int32

Indeks, od którego należy zacząć pisać zestaw znaków.The index at which to start writing the resulting set of characters.

Zwraca

Int32

Rzeczywista liczba znaków do zapisania chars .The actual number of characters written into chars.

Wyjątki

bytes to null.bytes is null.

-lub--or- chars to null.chars is null.

byteIndex lub byteCount charIndex jest mniejsza od zera.byteIndex or byteCount or charIndex is less than zero.

-lub--or- byteindex i byteCount nie należy zauważyć prawidłowego zakresu w bytes .byteindex and byteCount do not denote a valid range in bytes.

-lub--or- charIndex nie jest prawidłowym indeksem w chars .charIndex is not a valid index in chars.

chars nie ma wystarczającej pojemności od charIndex do końca tablicy, aby pomieścić wyniki.chars does not have enough capacity from charIndex to the end of the array to accommodate the resulting characters.

Wystąpiła rezerwa (Aby uzyskać więcej informacji, zobacz kodowanie znaków w programie .NET).A fallback occurred (for more information, see Character Encoding in .NET) lub-and- DecoderFallback jest ustawiony na DecoderExceptionFallback .DecoderFallback is set to DecoderExceptionFallback.

Przykłady

W poniższym przykładzie pokazano, jak zdekodować zakres elementów z tablicy bajtowej i przechowywać wynik w zestawie elementów w tablicy znaków Unicode.The following example demonstrates how to decode a range of elements from a byte array and store the result in a set of elements in a Unicode character array.

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 wyników, aplikacja używa GetCharCount .To calculate the exact array size required by GetChars to store the resulting characters, the application uses GetCharCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna używać GetMaxCharCount .To calculate the maximum array size, the application should use GetMaxCharCount. GetCharCountMetoda ogólnie zezwala na przydzielanie mniejszej ilości pamięci, podczas gdy GetMaxCharCount metoda zazwyczaj wykonuje się szybciej.The GetCharCount method generally allows allocation of less memory, while the GetMaxCharCount method generally executes faster.

Dane do przekonwertowania, takie jak dane odczytane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych.Data to be converted, such as data read from a stream, can be available only in sequential blocks. W tym przypadku lub, jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, aplikacja powinna używać lub odpowiednio do metody Decoder Encoder GetDecoder lub GetEncoder metody.In this case, or if the amount of data is so large that it needs to be divided into smaller blocks, the application should use the Decoder or the Encoder provided by the GetDecoder method or the GetEncoder method, respectively.

ASCIIEncoding nie zapewnia wykrywania błędów.ASCIIEncoding does not provide error detection. Każdy bajt większy niż szesnastkowy 0x7F jest zdekodowany jako znak zapytania Unicode ("?").Any byte greater than hexadecimal 0x7F is decoded as the Unicode question mark ("?").

Przestroga

Ze względów bezpieczeństwa zalecane jest użycie UTF8Encoding , UnicodeEncoding , lub UTF32Encoding i włączenie wykrywania błędów.For security reasons, your application is recommended to use UTF8Encoding, UnicodeEncoding, or UTF32Encoding and enable error detection.

Zobacz też

Dotyczy