Decoder Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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ényt |
| Convert(Decoder, ReadOnlySpan<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean) |
ReadOnlySpan<T> Karaktert alakít át a karakterekkel |