Bagikan melalui


Decoder Kelas

Definisi

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 writer.

Convert(Decoder, ReadOnlySpan<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean)

Mengonversi ke ReadOnlySpan<T> karakter menggunakan decoder dan menulis hasilnya menjadi writer.

Berlaku untuk

Lihat juga