Decoder クラス

定義

エンコードされたバイトのシーケンスを一連の文字に変換します。

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
継承
Decoder
属性

次の例では、 Decoder を使用して 2 つの異なるバイト配列を文字配列に変換する方法を示します。 文字のバイトの 1 つが配列にまたがっています。 これは、ストリームを読み取るときに StreamReader オブジェクトが内部的に行うのと似ています。

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

注釈

Decoder クラスの実装のインスタンスを取得するには、Encoding実装のGetDecoder メソッドを呼び出します。

GetCharCount メソッドは、バイト シーケンスをデコードする結果の文字数を決定し、GetChars メソッドは実際のデコードを実行します。 Decoder クラスでは、これらの両方のメソッドのいくつかのバージョンを使用できます。 詳細については、Encoding.GetCharsを参照してください。 Decoder オブジェクトは、GetCharsメソッドまたはConvert メソッドの連続する呼び出し間で状態情報を保持するため、ブロックにまたがるバイト シーケンスを正しくデコードできます。 Decoderでは、データ ブロックの末尾にある末尾のバイトも保持され、次のデコード操作で末尾のバイトが使用されます。 そのため、 GetDecoderGetEncoder は、ネットワーク転送とファイル操作に役立ちます。これらの操作は、完全なデータ ストリームではなく、データ ブロックを処理することが多いためです。

Note

データ ストリームを使用してアプリケーションを実行する場合は、 flush パラメーターを適切なメソッド呼び出しで true に設定して、状態情報がフラッシュされていることを確認する必要があります。 例外が発生した場合、またはアプリケーションがストリームを切り替えた場合は、 Reset を呼び出して、 Decoder オブジェクトの内部状態をクリアする必要があります。

注意 (実装者)

アプリケーションがこのクラスから継承する場合は、すべてのメンバーをオーバーライドする必要があります。

コンストラクター

名前 説明
Decoder()

Decoder クラスの新しいインスタンスを初期化します。

プロパティ

名前 説明
Fallback

現在のDecoder オブジェクトのDecoderFallback オブジェクトを取得または設定します。

FallbackBuffer

現在のDecoder オブジェクトに関連付けられているDecoderFallbackBuffer オブジェクトを取得します。

メソッド

名前 説明
Convert(Byte[], Int32, Int32, Char[], Int32, Int32, Boolean, Int32, Int32, Boolean)

エンコードされたバイトの配列を UTF-16 でエンコードされた文字に変換し、結果を文字配列に格納します。

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

エンコードされたバイトのバッファーを UTF-16 でエンコードされた文字に変換し、結果を別のバッファーに格納します。

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

エンコードされたバイトのスパンを UTF-16 エンコード文字に変換し、結果を別のスパン バッファーに格納します。

Equals(Object)

指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetCharCount(Byte[], Int32, Int32, Boolean)

派生クラスでオーバーライドされた場合、指定したバイト配列からバイト シーケンスをデコードすることによって生成される文字数を計算します。 パラメーターは、計算後にデコーダーの内部状態をクリアするかどうかを示します。

GetCharCount(Byte[], Int32, Int32)

派生クラスでオーバーライドされた場合、指定したバイト配列からバイト シーケンスをデコードすることによって生成される文字数を計算します。

GetCharCount(Byte*, Int32, Boolean)

派生クラスでオーバーライドされると、指定したバイト ポインターから始まるバイト シーケンスをデコードすることによって生成される文字数を計算します。 パラメーターは、計算後にデコーダーの内部状態をクリアするかどうかを示します。

GetCharCount(ReadOnlySpan<Byte>, Boolean)

派生クラスでオーバーライドされると、スパン内のバイト シーケンスをデコードすることによって生成される文字数を計算します。 パラメーターは、計算後にデコーダーの内部状態をクリアするかどうかを示します。

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

派生クラスでオーバーライドされると、指定したバイト配列のバイト シーケンスと、内部バッファー内の任意のバイトを、指定した文字配列にデコードします。 パラメーターは、変換後にデコーダーの内部状態をクリアするかどうかを示します。

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

派生クラスでオーバーライドされると、指定したバイト配列のバイト シーケンスと、内部バッファー内の任意のバイトを、指定した文字配列にデコードします。

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

派生クラスでオーバーライドされると、指定したバイト ポインターから始まるバイトのシーケンスと、内部バッファー内の任意のバイトを、指定した文字ポインターから始めて格納される文字のセットにデコードします。 パラメーターは、変換後にデコーダーの内部状態をクリアするかどうかを示します。

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

派生クラスでオーバーライドされると、スパン バイトのシーケンスと内部バッファー内のすべてのバイトを、指定した文字ポインターから始めて格納される文字のセットにデコードします。 パラメーターは、変換後にデコーダーの内部状態をクリアするかどうかを示します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
Reset()

派生クラスでオーバーライドされると、デコーダーを初期状態に戻します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください