Bagikan melalui


Decoder.GetChars Metode

Definisi

Ketika ditimpa dalam kelas turunan, dekode urutan byte menjadi satu set karakter.

Overload

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

Ketika ditimpa di kelas turunan, dekode urutan byte rentang dan byte apa pun di buffer internal menjadi sekumpulan karakter yang disimpan mulai dari penunjuk karakter yang ditentukan. Parameter menunjukkan apakah akan menghapus status internal dekoder setelah konversi.

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

Ketika ditimpa dalam kelas turunan, mendekode urutan byte yang dimulai pada penunjuk byte yang ditentukan dan byte apa pun di buffer internal ke dalam sekumpulan karakter yang disimpan mulai dari penunjuk karakter yang ditentukan. Parameter menunjukkan apakah akan menghapus status internal dekoder setelah konversi.

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

Saat ditimpa di kelas turunan, dekode urutan byte dari array byte yang ditentukan dan byte apa pun dalam buffer internal ke dalam array karakter yang ditentukan.

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

Saat ditimpa di kelas turunan, dekode urutan byte dari array byte yang ditentukan dan byte apa pun dalam buffer internal ke dalam array karakter yang ditentukan. Parameter menunjukkan apakah akan menghapus status internal dekoder setelah konversi.

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

Sumber:
Decoder.cs
Sumber:
Decoder.cs
Sumber:
Decoder.cs

Ketika ditimpa di kelas turunan, dekode urutan byte rentang dan byte apa pun di buffer internal menjadi sekumpulan karakter yang disimpan mulai dari penunjuk karakter yang ditentukan. Parameter menunjukkan apakah akan menghapus status internal dekoder setelah konversi.

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

Parameter

bytes
ReadOnlySpan<Byte>

Rentang byte untuk dekode.

chars
Span<Char>

Rentang untuk menulis kumpulan karakter yang dihasilkan.

flush
Boolean

true untuk menghapus status internal dekoder setelah konversi; jika tidak, false.

Mengembalikan

Jumlah karakter aktual yang ditulis pada rentang yang ditunjukkan oleh chars parameter .

Keterangan

Ingat bahwa Decoder objek menyimpan status antara panggilan ke GetChars. Ketika aplikasi dilakukan dengan aliran data, aplikasi harus mengatur flush parameter ke untuk true memastikan bahwa informasi status dibersihkan. Dengan pengaturan ini, dekoder mengabaikan byte yang tidak valid di akhir blok data dan menghapus buffer internal.

Untuk menghitung ukuran rentang yang tepat yang GetChars mengharuskan untuk menyimpan karakter yang dihasilkan, aplikasi harus menggunakan GetCharCount.

Jika GetChars dipanggil dengan flush diatur ke false, dekoder menyimpan byte berikutnya di akhir blok data dalam buffer internal dan menggunakannya dalam operasi pendekodean berikutnya. Aplikasi harus memanggil GetCharCount blok data segera sebelum memanggil GetChars pada blok yang sama, sehingga byte berikutnya dari blok sebelumnya disertakan dalam perhitungan.

Jika aplikasi Anda mengonversi banyak segmen aliran input, pertimbangkan untuk menggunakan metode .Convert GetChars akan melemparkan pengecualian jika rentang output tidak cukup besar, tetapi Convert akan mengisi ruang sebanyak mungkin dan mengembalikan byte yang dibaca dan karakter yang ditulis, asalkan array output memungkinkan setidaknya dua karakter. Encoding.GetChars Lihat juga topik untuk komentar lainnya.

Berlaku untuk

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

Sumber:
Decoder.cs
Sumber:
Decoder.cs
Sumber:
Decoder.cs

Penting

API ini bukan kompatibel CLS.

Ketika ditimpa dalam kelas turunan, mendekode urutan byte yang dimulai pada penunjuk byte yang ditentukan dan byte apa pun di buffer internal ke dalam sekumpulan karakter yang disimpan mulai dari penunjuk karakter yang ditentukan. Parameter menunjukkan apakah akan menghapus status internal dekoder setelah konversi.

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

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.

flush
Boolean

true untuk menghapus status internal dekoder setelah konversi; jika tidak, false.

Mengembalikan

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

Atribut

Pengecualian

bytes adalah null (Nothing).

-atau-

chars adalah null (Nothing).

byteCount atau charCount kurang dari nol.

charCount kurang dari jumlah karakter yang dihasilkan.

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

-dan-

Fallback diatur ke DecoderExceptionFallback.

Keterangan

Ingat bahwa Decoder objek menyimpan status antara panggilan ke GetChars. Ketika aplikasi dilakukan dengan aliran data, aplikasi harus mengatur flush parameter ke untuk true memastikan bahwa informasi status dibersihkan. Dengan pengaturan ini, dekoder mengabaikan byte yang tidak valid di akhir blok data dan menghapus buffer internal.

Untuk menghitung ukuran buffer yang tepat yang GetChars mengharuskan untuk menyimpan karakter yang dihasilkan, aplikasi harus menggunakan GetCharCount.

Jika GetChars dipanggil dengan flush diatur ke false, dekoder menyimpan byte berikutnya di akhir blok data dalam buffer internal dan menggunakannya dalam operasi pendekodean berikutnya. Aplikasi harus memanggil GetCharCount blok data segera sebelum memanggil GetChars pada blok yang sama, sehingga byte berikutnya dari blok sebelumnya disertakan dalam perhitungan.

Jika aplikasi Anda mengonversi banyak segmen aliran input, pertimbangkan untuk menggunakan metode .Convert GetChars akan memberikan pengecualian jika buffer output tidak cukup besar, tetapi Convert akan mengisi ruang sebanyak mungkin dan mengembalikan byte yang dibaca dan karakter yang ditulis, asalkan array output memungkinkan setidaknya dua karakter. Encoding.GetChars Lihat juga topik untuk komentar lainnya.

Lihat juga

Berlaku untuk

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

Sumber:
Decoder.cs
Sumber:
Decoder.cs
Sumber:
Decoder.cs

Saat ditimpa di kelas turunan, dekode urutan byte dari array byte yang ditentukan dan byte apa pun dalam buffer internal ke dalam array karakter yang ditentukan.

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

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

bytes adalah null (Nothing).

-atau-

chars adalah null (Nothing).

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-

Fallback diatur ke DecoderExceptionFallback.

Contoh

Contoh berikut menunjukkan cara mendekode rentang elemen dari array byte dan menyimpannya dalam array karakter Unicode. Metode GetCharCount ini digunakan untuk menghitung jumlah karakter yang diperlukan untuk menyimpan elemen yang didekodekan dalam array bytes. Metode GetChars mendekode elemen yang ditentukan dalam array byte dan menyimpannya dalam array karakter baru.

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]
'

Keterangan

Ingat bahwa Decoder objek menyimpan status antara panggilan ke GetChars. Ketika aplikasi dilakukan dengan aliran data, aplikasi harus mengatur flush parameter ke untuk true memastikan bahwa informasi status dibersihkan. Dengan pengaturan ini, dekoder mengabaikan byte yang tidak valid di akhir blok data dan menghapus buffer internal.

Untuk menghitung ukuran array yang tepat yang GetChars mengharuskan untuk menyimpan karakter yang dihasilkan, aplikasi harus menggunakan GetCharCount.

Jika GetChars dipanggil dengan flush diatur ke false, dekoder menyimpan byte berikutnya di akhir blok data dalam buffer internal dan menggunakannya dalam operasi pendekodean berikutnya. Aplikasi harus memanggil GetCharCount blok data segera sebelum memanggil GetChars pada blok yang sama, sehingga byte berikutnya dari blok sebelumnya disertakan dalam perhitungan.

Jika aplikasi Anda mengonversi banyak segmen aliran input, pertimbangkan untuk menggunakan metode .Convert GetChars akan memberikan pengecualian jika buffer output tidak cukup besar, tetapi Convert akan mengisi ruang sebanyak mungkin dan mengembalikan byte yang dibaca dan karakter yang ditulis, asalkan array output memungkinkan setidaknya dua karakter. Encoding.GetChars Lihat juga topik untuk komentar lainnya.

Lihat juga

Berlaku untuk

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

Sumber:
Decoder.cs
Sumber:
Decoder.cs
Sumber:
Decoder.cs

Saat ditimpa dalam kelas turunan, dekode urutan byte dari array byte yang ditentukan dan byte apa pun dalam buffer internal ke dalam array karakter yang ditentukan. Parameter menunjukkan apakah akan menghapus status internal dekoder setelah konversi.

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

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 untuk berisi sekumpulan karakter yang dihasilkan.

charIndex
Int32

Indeks untuk mulai menulis sekumpulan karakter yang dihasilkan.

flush
Boolean

true untuk menghapus status internal dekoder setelah konversi; jika tidak, false.

Mengembalikan

Jumlah karakter aktual yang ditulis ke chars dalam parameter .

Pengecualian

bytes adalah null (Nothing).

-atau-

chars adalah null (Nothing).

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-

Fallback diatur ke DecoderExceptionFallback.

Keterangan

Ingatlah bahwa Decoder objek menyimpan status antara panggilan ke GetChars. Ketika aplikasi selesai dengan aliran data, aplikasi harus mengatur flush parameter ke untuk true memastikan bahwa informasi status dibersihkan. Dengan pengaturan ini, dekoder mengabaikan byte yang tidak valid di akhir blok data dan menghapus buffer internal.

Untuk menghitung ukuran array yang tepat yang GetChars diperlukan untuk menyimpan karakter yang dihasilkan, aplikasi harus menggunakan GetCharCount.

Jika GetChars dipanggil dengan flush diatur ke false, dekoder menyimpan byte berikutnya di akhir blok data dalam buffer internal dan menggunakannya dalam operasi pendekodean berikutnya. Aplikasi harus memanggil GetCharCount blok data segera sebelum memanggil GetChars pada blok yang sama, sehingga byte berikutnya dari blok sebelumnya disertakan dalam perhitungan.

Jika aplikasi Anda mengonversi banyak segmen aliran input, pertimbangkan untuk menggunakan metode .Convert GetChars akan memberikan pengecualian jika buffer output tidak cukup besar, tetapi Convert akan mengisi ruang sebanyak mungkin dan mengembalikan byte yang dibaca dan karakter yang ditulis, asalkan array output memungkinkan setidaknya dua karakter. Encoding.GetChars Lihat juga topik untuk komentar lainnya.

Lihat juga

Berlaku untuk