Bagikan melalui


ASCIIEncoding.GetChars Metode

Definisi

Mendekode urutan byte menjadi sekumpulan karakter.

Overload

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

Mendekode rentang byte yang ditentukan ke dalam rentang karakter yang ditentukan.

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

Mendekode urutan byte yang dimulai pada penunjuk byte yang ditentukan ke dalam sekumpulan karakter yang disimpan mulai dari penunjuk karakter yang ditentukan.

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

Mendekode urutan byte dari array byte yang ditentukan ke dalam array karakter yang ditentukan.

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

Sumber:
ASCIIEncoding.cs
Sumber:
ASCIIEncoding.cs
Sumber:
ASCIIEncoding.cs

Mendekode rentang byte yang ditentukan ke dalam rentang karakter yang ditentukan.

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

Parameter

bytes
ReadOnlySpan<Byte>

Rentang yang berisi byte untuk didekodekan.

chars
Span<Char>

Rentang untuk berisi sekumpulan karakter yang dihasilkan.

Mengembalikan

Jumlah karakter aktual yang ditulis ke dalam chars.

Keterangan

Untuk menghitung ukuran yang tepat yang diperlukan oleh GetChars untuk menyimpan karakter yang dihasilkan, gunakan GetCharCount. Untuk menghitung ukuran maksimum, gunakan GetMaxCharCount. Metode ini GetCharCount umumnya memungkinkan alokasi lebih sedikit memori, sementara GetMaxCharCount metode umumnya dijalankan lebih cepat.

Data yang akan dikonversi, seperti data yang dibaca dari aliran, hanya dapat tersedia dalam blok berurutan. Dalam hal ini, atau jika jumlah data sangat besar sehingga perlu dibagi menjadi blok yang lebih kecil, Anda harus menggunakan Decoder atau Encoder yang disediakan oleh GetDecoder metode atau GetEncoder metode .

ASCIIEncoding tidak memberikan deteksi kesalahan. Setiap byte yang lebih besar dari heksadesimal 0x7F didekodekan sebagai tanda tanya Unicode ("?").

Perhatian

Untuk alasan keamanan, Anda harus menggunakan UTF8Encoding, , UnicodeEncodingatau UTF32Encoding dan mengaktifkan deteksi kesalahan.

Berlaku untuk

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

Sumber:
ASCIIEncoding.cs
Sumber:
ASCIIEncoding.cs
Sumber:
ASCIIEncoding.cs

Penting

API ini bukan kompatibel CLS.

Alternatif kompatibel CLS
System.Text.ASCIIEncoding.GetChars(Byte[], Int32, Int32, Char[], Int32)

Mendekode urutan byte yang dimulai pada penunjuk byte yang ditentukan ke dalam sekumpulan karakter yang disimpan mulai dari penunjuk karakter yang ditentukan.

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

Parameter

bytes
Byte*

Penunjuk ke byte pertama yang akan didekodekan.

byteCount
Int32

Jumlah byte yang akan didekodekan.

chars
Char*

Penunjuk ke lokasi untuk mulai menulis kumpulan karakter yang dihasilkan.

charCount
Int32

Jumlah maksimum karakter yang akan ditulis.

Mengembalikan

Jumlah karakter aktual yang ditulis di lokasi yang ditunjukkan oleh chars.

Atribut

Pengecualian

bytesadalah null.

-atau-

charsadalah null.

byteCount atau charCount kurang dari nol.

charCount kurang dari jumlah karakter yang dihasilkan.

Fallback terjadi (untuk informasi selengkapnya, lihat Pengodean Karakter di .NET)

-dan-

DecoderFallback diatur ke DecoderExceptionFallback.

Keterangan

Untuk menghitung ukuran array yang tepat yang diperlukan oleh GetChars untuk menyimpan karakter yang dihasilkan, aplikasi menggunakan GetCharCount. Untuk menghitung ukuran array maksimum, aplikasi harus menggunakan GetMaxCharCount. Metode ini GetCharCount umumnya memungkinkan alokasi lebih sedikit memori, sementara GetMaxCharCount metode umumnya dijalankan lebih cepat.

Data yang akan dikonversi, seperti data yang dibaca dari aliran, hanya dapat tersedia dalam blok berurutan. Dalam hal ini, atau jika jumlah data sangat besar sehingga perlu dibagi menjadi blok yang lebih kecil, aplikasi harus menggunakan Decoder atau Encoder yang disediakan oleh GetDecoder metode atau GetEncoder metode .

ASCIIEncoding tidak memberikan deteksi kesalahan. Setiap byte yang lebih besar dari 0x7F heksadesimal didekodekan sebagai tanda tanya Unicode ("?").

Perhatian

Untuk alasan keamanan, aplikasi Anda disarankan untuk menggunakan UTF8Encoding, , UnicodeEncodingatau UTF32Encoding dan mengaktifkan deteksi kesalahan.

Lihat juga

Berlaku untuk

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

Sumber:
ASCIIEncoding.cs
Sumber:
ASCIIEncoding.cs
Sumber:
ASCIIEncoding.cs

Mendekode urutan byte dari array byte yang ditentukan ke dalam array karakter yang ditentukan.

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

Parameter

bytes
Byte[]

Array byte yang berisi urutan byte yang akan didekodekan.

byteIndex
Int32

Indeks byte pertama yang didekodekan.

byteCount
Int32

Jumlah byte yang akan didekodekan.

chars
Char[]

Array karakter yang berisi kumpulan karakter yang dihasilkan.

charIndex
Int32

Indeks untuk mulai menulis kumpulan karakter yang dihasilkan.

Mengembalikan

Jumlah karakter aktual yang ditulis ke dalam chars.

Pengecualian

bytesadalah null.

-atau-

charsadalah null.

byteIndex atau byteCount atau charIndex kurang dari nol.

-atau-

byteindex dan byteCount jangan menandakan rentang yang valid di bytes.

-atau-

charIndex bukan indeks yang valid di chars.

chars tidak memiliki kapasitas yang cukup dari charIndex hingga akhir array untuk mengakomodasi karakter yang dihasilkan.

Fallback terjadi (untuk informasi selengkapnya, lihat Pengodean Karakter di .NET)

-dan-

DecoderFallback diatur ke DecoderExceptionFallback.

Contoh

Contoh berikut menunjukkan cara mendekode rentang elemen dari array byte dan menyimpan hasilnya dalam sekumpulan elemen dalam array karakter 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

Keterangan

Untuk menghitung ukuran array yang tepat yang diperlukan oleh GetChars untuk menyimpan karakter yang dihasilkan, aplikasi menggunakan GetCharCount. Untuk menghitung ukuran array maksimum, aplikasi harus menggunakan GetMaxCharCount. Metode ini GetCharCount umumnya memungkinkan alokasi lebih sedikit memori, sementara GetMaxCharCount metode umumnya dijalankan lebih cepat.

Data yang akan dikonversi, seperti data yang dibaca dari aliran, hanya dapat tersedia dalam blok berurutan. Dalam hal ini, atau jika jumlah data sangat besar sehingga perlu dibagi menjadi blok yang lebih kecil, aplikasi harus menggunakan Decoder atau Encoder yang disediakan oleh GetDecoder metode atau GetEncoder metode .

ASCIIEncoding tidak memberikan deteksi kesalahan. Setiap byte yang lebih besar dari 0x7F heksadesimal didekodekan sebagai tanda tanya Unicode ("?").

Perhatian

Untuk alasan keamanan, aplikasi Anda disarankan untuk menggunakan UTF8Encoding, , UnicodeEncodingatau UTF32Encoding dan mengaktifkan deteksi kesalahan.

Lihat juga

Berlaku untuk