Decoder Kelas
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.
Mengonversi urutan byte yang dikodekan menjadi satu set karakter.
public ref class Decoder abstract
public abstract class Decoder
[System.Serializable]
public abstract class Decoder
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class Decoder
type Decoder = class
[<System.Serializable>]
type Decoder = class
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Decoder = class
Public MustInherit Class Decoder
- Warisan
-
Decoder
- Atribut
Contoh
Contoh berikut menunjukkan penggunaan Decoder untuk mengonversi dua array byte yang berbeda menjadi array karakter. Salah satu byte karakter mencakup array. Ini mirip dengan apa yang StreamReader dilakukan objek secara internal saat membaca aliran.
using namespace System;
using namespace System::Text;
int main()
{
// These bytes in UTF-8 correspond to 3 different Unicode
// characters: space (U+0020), # (U+0023), and the biohazard
// symbol (U+2623). Note the biohazard symbol requires 3 bytes
// in UTF-8 (hexadecimal e2, 98, a3). Decoders store state across
// multiple calls to GetChars, handling the case when one char
// is in multiple byte arrays.
array<Byte>^bytes1 = {0x20,0x23,0xe2};
array<Byte>^bytes2 = {0x98,0xa3};
array<Char>^chars = gcnew array<Char>(3);
Decoder^ d = Encoding::UTF8->GetDecoder();
int charLen = d->GetChars( bytes1, 0, bytes1->Length, chars, 0 );
// The value of charLen should be 2 now.
charLen += d->GetChars( bytes2, 0, bytes2->Length, chars, charLen );
for ( UInt16 index(0); index < chars->Length; ++index )
{
Console::Write( "U+{0:X4} ", static_cast<UInt16>(chars[ index ]) );
}
}
using System;
using System.Text;
public class dec
{
public static void Main()
{
// These bytes in UTF-8 correspond to 3 different Unicode
// characters: space (U+0020), # (U+0023), and the biohazard
// symbol (U+2623). Note the biohazard symbol requires 3 bytes
// in UTF-8 (hexadecimal e2, 98, a3). Decoders store state across
// multiple calls to GetChars, handling the case when one char
// is in multiple byte arrays.
byte[] bytes1 = { 0x20, 0x23, 0xe2 };
byte[] bytes2 = { 0x98, 0xa3 };
char[] chars = new char[3];
Decoder d = Encoding.UTF8.GetDecoder();
int charLen = d.GetChars(bytes1, 0, bytes1.Length, chars, 0);
// The value of charLen should be 2 now.
charLen += d.GetChars(bytes2, 0, bytes2.Length, chars, charLen);
foreach(char c in chars)
Console.Write("U+{0:X4} ", (ushort)c);
}
}
Imports System.Text
Public Class dec
Public Shared Sub Main()
' These bytes in UTF-8 correspond to 3 different Unicode
' characters: space (U+0020), # (U+0023), and the biohazard
' symbol (U+2623). Note the biohazard symbol requires 3 bytes
' in UTF-8 (hexadecimal e2, 98, a3). Decoders store state across
' multiple calls to GetChars, handling the case when one char
' is in multiple byte arrays.
Dim bytes1 As Byte() = {&H20, &H23, &HE2}
Dim bytes2 As Byte() = {&H98, &HA3}
Dim chars(3) As Char
Dim d As Decoder = Encoding.UTF8.GetDecoder()
Dim charLen As Integer = d.GetChars(bytes1, 0, bytes1.Length, chars, 0)
' The value of charLen should be 2 now.
charLen += d.GetChars(bytes2, 0, bytes2.Length, chars, charLen)
Dim c As Char
For Each c In chars
Console.Write("U+{0:X4} ", Convert.ToUInt16(c) )
Next c
End Sub
End Class
Keterangan
Untuk mendapatkan instans implementasi Decoder kelas , panggil GetDecoder metode implementasi Encoding .
Metode menentukan GetCharCount berapa banyak karakter yang menghasilkan decoding urutan byte, dan GetChars metode melakukan decoding aktual. Ada beberapa versi dari kedua metode ini yang tersedia di Decoder kelas . Untuk informasi selengkapnya, lihat Encoding.GetChars. Objek Decoder mempertahankan informasi status antara panggilan berturut-turut ke GetChars
atau Convert metode sehingga dapat mendekode urutan byte dengan benar yang mencakup blok. juga Decoder mempertahankan byte berikutnya di akhir blok data dan menggunakan byte berikutnya dalam operasi pendekodean berikutnya. Oleh karena itu, GetDecoder dan GetEncoder berguna untuk transmisi jaringan dan operasi file karena operasi tersebut sering berurusan dengan blok data alih-alih aliran data lengkap.
Catatan
Ketika aplikasi dilakukan dengan aliran data, aplikasi harus memastikan bahwa informasi status dihapus dengan mengatur flush
parameter ke true
dalam panggilan metode yang sesuai. Jika pengecualian terjadi atau jika aplikasi beralih aliran, aplikasi harus memanggil Reset untuk menghapus status Decoder
internal objek.
Catatan Bagi Implementer
Ketika aplikasi Anda mewarisi dari kelas ini, aplikasi harus mengambil alih semua anggota.
Konstruktor
Decoder() |
Menginisialisasi instans baru kelas Decoder. |
Properti
Fallback |
Mendapatkan atau mengatur DecoderFallback objek untuk objek saat ini Decoder . |
FallbackBuffer |
Mendapatkan objek yang DecoderFallbackBuffer terkait dengan objek saat ini Decoder . |
Metode
Convert(Byte*, Int32, Char*, Int32, Boolean, Int32, Int32, Boolean) |
Mengonversi buffer byte yang dikodekan ke karakter yang dikodekan UTF-16 dan menyimpan hasilnya dalam buffer lain. |
Convert(Byte[], Int32, Int32, Char[], Int32, Int32, Boolean, Int32, Int32, Boolean) |
Mengonversi array byte yang dikodekan menjadi karakter yang dikodekan UTF-16 dan menyimpan hasilnya dalam array karakter. |
Convert(ReadOnlySpan<Byte>, Span<Char>, Boolean, Int32, Int32, Boolean) |
Mengonversi rentang byte yang dikodekan menjadi karakter yang dikodekan UTF-16 dan menyimpan hasilnya dalam buffer rentang lain. |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetCharCount(Byte*, Int32, Boolean) |
Saat ditimpa dalam kelas turunan, menghitung jumlah karakter yang dihasilkan dengan mendekode urutan byte mulai dari penunjuk byte yang ditentukan. Parameter menunjukkan apakah akan menghapus status internal dekoder setelah perhitungan. |
GetCharCount(Byte[], Int32, Int32) |
Saat ditimpa dalam kelas turunan, menghitung jumlah karakter yang dihasilkan dengan mendekode urutan byte dari array byte yang ditentukan. |
GetCharCount(Byte[], Int32, Int32, Boolean) |
Saat ditimpa dalam kelas turunan, menghitung jumlah karakter yang dihasilkan dengan mendekode urutan byte dari array byte yang ditentukan. Parameter menunjukkan apakah akan menghapus status internal dekoder setelah perhitungan. |
GetCharCount(ReadOnlySpan<Byte>, Boolean) |
Ketika ditimpa dalam kelas turunan, menghitung jumlah karakter yang dihasilkan dengan mendekode urutan byte dalam rentang. Parameter menunjukkan apakah akan menghapus status internal dekoder setelah perhitungan. |
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) |
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. |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
Reset() |
Ketika ditimpa di kelas turunan, mengatur dekoder kembali ke keadaan awalnya. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Metode Ekstensi
Convert(Decoder, ReadOnlySequence<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean) |
ReadOnlySequence<T> Mengonversi ke karakter yang dikodekan UTF-16 dan menulis hasilnya menjadi |
Convert(Decoder, ReadOnlySpan<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean) |
Mengonversi ke ReadOnlySpan<T> karakter menggunakan |