Decoder Osztály

Definíció

Kódolt bájtok sorozatát karakterkészletté alakítja.

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
Öröklődés
Decoder
Attribútumok

Példák

Az alábbi példa bemutatja, Decoder hogy a két különböző bájttömb karaktertömbökké alakítható. A karakter egyik bájtja a tömbökre terjed ki. Ez hasonló ahhoz, amit egy StreamReader objektum belsőleg csinál egy stream olvasásakor.

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

Megjegyzések

Az osztály implementációjának egy példányának Decoder lekéréséhez hívja meg az GetDecoder implementáció metódusát Encoding .

A GetCharCount metódus meghatározza, hogy hány karakter eredményez bájtsorozat dekódolását, és a GetChars metódus végrehajtja a tényleges dekódolást. Mindkét módszernek több verziója is elérhető az Decoder osztályban. További információért lásd Encoding.GetChars. Az Decoder objektumok állapotinformációkat tartanak fenn az egymást követő hívások GetChars vagy Convert metódusok között, hogy megfelelően dekódolhassák a blokkokra kiterjedő bájtütemezéseket. A Decoder záró bájtok az adatblokkok végén is megmaradnak, és a következő dekódolási műveletben a záró bájtokat használják. Ezért hasznos a hálózati átvitelhez és a fájlműveletekhez, GetDecoderGetEncoder mert ezek a műveletek gyakran teljes adatfolyam helyett adatblokkokkal foglalkoznak.

Note

Ha az alkalmazás adatstreamdel van végrehajtva, győződjön meg arról, hogy az állapotinformációk ki lesznek ürítve, ha a flush paramétert true a megfelelő metódushívásban állítja be. Ha kivétel történik, vagy ha az alkalmazás streameket vált, az objektum belső állapotának Reset törlésére kell hívniaDecoder.

Megjegyzések az implementálókhoz

Amikor az alkalmazás örökli ezt az osztályt, felül kell bírálnia az összes tagot.

Konstruktorok

Name Description
Decoder()

Inicializálja a Decoder osztály új példányát.

Tulajdonságok

Name Description
Fallback

Lekéri vagy beállítja DecoderFallback az aktuális Decoder objektum objektumát.

FallbackBuffer

Lekéri az DecoderFallbackBuffer aktuális Decoder objektumhoz társított objektumot.

Metódusok

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

Kódolt bájtokat tartalmazó tömböt konvertál UTF-16 kódolású karakterekké, és az eredményt egy karaktertömbben tárolja.

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

Kódolt bájtok pufferét UTF-16 kódolású karakterekké alakítja át, és az eredményt egy másik pufferben tárolja.

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

Kódolt bájtok UTF-16 kódolású karakterekké alakít át, és az eredményt egy másik span pufferben tárolja.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetCharCount(Byte[], Int32, Int32, Boolean)

Származtatott osztályban felülbírálva kiszámítja a megadott bájttömbből származó bájtsorozat dekódolásával előállított karakterek számát. A paraméter azt jelzi, hogy a számítás után törölje-e a dekóder belső állapotát.

GetCharCount(Byte[], Int32, Int32)

Származtatott osztályban felülbírálva kiszámítja a megadott bájttömbből származó bájtsorozat dekódolásával előállított karakterek számát.

GetCharCount(Byte*, Int32, Boolean)

Származtatott osztályban felülbírálva kiszámítja a bájtok sorozatának a megadott bájtmutatótól kezdődő dekódolásával előállított karakterek számát. A paraméter azt jelzi, hogy a számítás után törölje-e a dekóder belső állapotát.

GetCharCount(ReadOnlySpan<Byte>, Boolean)

Származtatott osztályban felülbírálva kiszámítja a bájtok sorozatának a spanban történő dekódolásával előállított karakterek számát. A paraméter azt jelzi, hogy a számítás után törölje-e a dekóder belső állapotát.

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

Ha egy származtatott osztályban felülbírál, a megadott bájttömbből és a belső pufferben lévő bájtokból származó bájtok sorozatát dekódolja a megadott karaktertömbbe. A paraméter azt jelzi, hogy az átalakítás után törölje-e a dekóder belső állapotát.

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

Ha egy származtatott osztályban felülbírál, a megadott bájttömbből és a belső pufferben lévő bájtokból származó bájtok sorozatát dekódolja a megadott karaktertömbbe.

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

Ha egy származtatott osztályban felülbírál, a megadott bájtmutatótól kezdődő bájtok sorozatát, a belső pufferben lévő bájtokat pedig a megadott karaktermutatótól kezdődően tárolt karakterkészletbe dekódolja. A paraméter azt jelzi, hogy az átalakítás után törölje-e a dekóder belső állapotát.

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

Ha egy származtatott osztályban felülbírál, a belső pufferben lévő span bájtok és bájtok sorozatát a megadott karaktermutatótól kezdődően tárolt karakterek halmazába kódolja. A paraméter azt jelzi, hogy az átalakítás után törölje-e a dekóder belső állapotát.

GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
Reset()

Ha egy származtatott osztályban felül van bírálva, a dekóder vissza lesz állítva a kezdeti állapotba.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Bővítő metódusok

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

ReadOnlySequence<T> UTF-16 kódolt karakterekké alakítja át az eredménytwriter.

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

ReadOnlySpan<T> Karaktert alakít át a karakterekkeldecoder, és az eredményt a következőre writerírja: .

A következőre érvényes:

Lásd még