Aracılığıyla paylaş


Decoder Sınıf

Tanım

Kodlanmış bayt dizisini bir karakter kümesine dönüştürür.

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
Devralma
Decoder
Öznitelikler

Örnekler

Aşağıdaki örnekte, iki farklı bayt dizisini karakter dizisine dönüştürmek için bir Decoder kullanımı gösterilmektedir. Karakterin baytlarından biri dizilere yayılır. Bu, bir akışı okurken bir StreamReader nesnenin dahili olarak yaptıklarına benzer.

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

Açıklamalar

sınıfının bir uygulamasının Decoder örneğini almak için bir Encoding uygulama yöntemini çağırınGetDecoder.

GetCharCount yöntemi, bayt dizisinin kodunun çözülmesiyle sonuçlanan karakter sayısını belirler ve GetChars yöntem gerçek kod çözme işlemini gerçekleştirir. Sınıfında bu yöntemlerin birkaç sürümü vardır Decoder . Daha fazla bilgi için bkz. Encoding.GetChars. Nesne Decoder , blokları kapsayan bayt dizilerinin kodunu doğru bir şekilde çözebilmesi için ardışık GetChars çağrılar veya Convert yöntemleri arasında durum bilgilerini tutar. ayrıca Decoder veri bloklarının sonundaki baytları korur ve sonraki kod çözme işleminde sondaki baytları kullanır. Bu nedenle ve GetDecoderGetEncoder ağ iletimi ve dosya işlemleri için yararlıdır çünkü bu işlemler genellikle tam bir veri akışı yerine veri bloklarıyla ilgilenir.

Not

Uygulama bir veri akışıyla tamamlandığında, uygun yöntem çağrısında parametresini true olarak ayarlayarak flush durum bilgilerinin temizlendiğinden emin olmalıdır. Bir özel durum oluşursa veya uygulama akışları değiştirirse, nesnenin iç durumunu Decoder temizlemek için çağrısı Reset yapmalıdır.

Uygulayanlara Notlar

Uygulamanız bu sınıftan devraldığında tüm üyeleri geçersiz kılmalıdır.

Oluşturucular

Decoder()

Decoder sınıfının yeni bir örneğini başlatır.

Özellikler

Fallback

Geçerli Decoder nesne için bir DecoderFallback nesne alır veya ayarlar.

FallbackBuffer

DecoderFallbackBuffer Geçerli Decoder nesneyle ilişkili nesneyi alır.

Yöntemler

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

Kodlanmış bayt arabelleklerini UTF-16 ile kodlanmış karakterlere dönüştürür ve sonucu başka bir arabellekte depolar.

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

Kodlanmış bayt dizisini UTF-16 ile kodlanmış karakterlere dönüştürür ve sonucu bir karakter dizisinde depolar.

Convert(ReadOnlySpan<Byte>, Span<Char>, Boolean, Int32, Int32, Boolean)

Kodlanmış baytların bir aralığını UTF-16 ile kodlanmış karakterlere dönüştürür ve sonucu başka bir yayılma arabelleğinde depolar.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetCharCount(Byte*, Int32, Boolean)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen bayt işaretçisinde başlayan bir bayt dizisinin kodunu çözerek üretilen karakter sayısını hesaplar. Parametre, hesaplamadan sonra kod çözücüsünün iç durumunun temizlenip temizlenmeyeceğini gösterir.

GetCharCount(Byte[], Int32, Int32)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen bayt dizisinden bir bayt dizisinin kodunu çözerek üretilen karakter sayısını hesaplar.

GetCharCount(Byte[], Int32, Int32, Boolean)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen bayt dizisinden bir bayt dizisinin kodunu çözerek üretilen karakter sayısını hesaplar. Parametre, hesaplamadan sonra kod çözücüsünün iç durumunun temizlenip temizlenmeyeceğini gösterir.

GetCharCount(ReadOnlySpan<Byte>, Boolean)

Türetilmiş bir sınıfta geçersiz kılındığında, yayılmadaki bayt sırasının kodunu çözerek üretilen karakter sayısını hesaplar. Parametre, hesaplamadan sonra kod çözücüsünün iç durumunun temizlenip temizlenmeyeceğini gösterir.

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

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen bayt işaretçisinde başlayan bir bayt dizisinin ve iç arabellekteki baytların kodunu, belirtilen karakter işaretçisinde başlayan bir dizi karaktere dönüştürür. Parametre, dönüştürmeden sonra kod çözücü iç durumunun temizlenip temizlenmeyeceğini gösterir.

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

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen bayt dizisinden bir bayt dizisinin ve iç arabellekteki tüm baytların kodunu belirtilen karakter dizisine çözer.

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

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen bayt dizisinden bir bayt dizisinin ve iç arabellekteki tüm baytların kodunu belirtilen karakter dizisine çözer. Parametre, dönüştürmeden sonra kod çözücü iç durumunun temizlenip temizlenmeyeceğini gösterir.

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

Türetilmiş bir sınıfta geçersiz kılındığında, iç arabellekteki bir dizi span baytını ve tüm baytları belirtilen karakter işaretçisinde başlayan bir karakter kümesine çözer. Parametre, dönüştürmeden sonra kod çözücü iç durumunun temizlenip temizlenmeyeceğini gösterir.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
Reset()

Türetilmiş bir sınıfta geçersiz kılındığında, kod çözücü yeniden başlangıç durumuna ayarlar.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Uzantı Metotları

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

Bir ReadOnlySequence<T> öğesini UTF-16 ile kodlanmış karakterlere dönüştürür ve sonucu öğesine writeryazar.

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

kullanarak decoder bir ReadOnlySpan<T> karaktere dönüştürür ve sonucu öğesine writeryazar.

Şunlara uygulanır

Ayrıca bkz.