Decoder.GetChars Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.
- 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
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
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
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.