Decoder クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
エンコードされたバイトのシーケンスを文字のセットに変換します。
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 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
注釈
クラスの実装Decoderのインスタンスを取得するには、実装の メソッドをGetDecoderEncoding呼び出します。
メソッドは、 GetCharCount バイトシーケンスをデコードする文字数を決定し、メソッドは GetChars 実際のデコードを実行します。 クラスでは、これらの両方のメソッドの複数のバージョンを Decoder 使用できます。 詳細については、「Encoding.GetChars」を参照してください。 オブジェクトはDecoder、 または Convert メソッドの連続する呼び出しの間で状態情報をGetChars
保持するため、ブロックにまたがるバイト シーケンスを正しくデコードできます。 また、は、 Decoder データブロックの末尾で末尾のバイトを保持し、次のデコード操作で末尾のバイトを使用します。 したがって、 GetDecoder と GetEncoder は、完全なデータ ストリームではなくデータブロックを処理することが多いため、ネットワーク転送およびファイル操作に役立ちます。
注意
アプリケーションでデータストリームを使用する場合は、適切なメソッド呼び出しで パラメーターを にtrue
設定flush
することで、状態情報がフラッシュされていることを確認する必要があります。 例外が発生した場合、またはアプリケーションがストリームを切り替える場合は、 を呼び出 Reset してオブジェクトの内部状態をクリアする Decoder
必要があります。
注意 (実装者)
アプリケーションがこのクラスから継承する場合は、すべてのメンバーをオーバーライドする必要があります。
コンストラクター
Decoder() |
Decoder クラスの新しいインスタンスを初期化します。 |
プロパティ
Fallback |
現在の DecoderFallback オブジェクトの Decoder オブジェクトを取得または設定します。 |
FallbackBuffer |
現在の DecoderFallbackBuffer オブジェクトに関連付けられている Decoder オブジェクトを取得します。 |
メソッド
Convert(Byte*, Int32, Char*, Int32, Boolean, Int32, Int32, Boolean) |
バッファーに格納されているエンコード済みバイトを UTF-16 エンコード文字に変換し、その結果を別のバッファーに格納します。 |
Convert(Byte[], Int32, Int32, Char[], Int32, Int32, Boolean, Int32, Int32, Boolean) |
配列に格納されているエンコード済みバイトを UTF-16 エンコード文字に変換し、その結果を文字配列に格納します。 |
Convert(ReadOnlySpan<Byte>, Span<Char>, Boolean, Int32, Int32, Boolean) |
エンコードされたバイトのスパンを UTF-16 エンコード文字に変換し、結果を別のスパン バッファーに格納します。 |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetCharCount(Byte*, Int32, Boolean) |
派生クラスでオーバーライドされた場合、指定したバイト ポインターから始まるバイト シーケンスをデコードすることによって生成される文字数を計算します。 パラメーターは、計算後に、デコーダーの内部状態をクリアするかどうかを示します。 |
GetCharCount(Byte[], Int32, Int32) |
派生クラスでオーバーライドされた場合、指定したバイト配列に格納されているバイト シーケンスをデコードすることによって生成される文字数を計算します。 |
GetCharCount(Byte[], Int32, Int32, Boolean) |
派生クラスでオーバーライドされた場合、指定したバイト配列に格納されているバイト シーケンスをデコードすることによって生成される文字数を計算します。 パラメーターは、計算後に、デコーダーの内部状態をクリアするかどうかを示します。 |
GetCharCount(ReadOnlySpan<Byte>, Boolean) |
派生クラスでオーバーライドされた場合、スパン内のバイト シーケンスをデコードすることによって生成される文字数を計算します。 パラメーターは、計算後に、デコーダーの内部状態をクリアするかどうかを示します。 |
GetChars(Byte*, Int32, Char*, Int32, Boolean) |
派生クラスでオーバーライドされた場合、指定したバイト ポインターで始まるバイト シーケンス、および内部バッファー内のバイトを、指定した文字ポインターを開始位置として格納される文字のセットにエンコードします。 パラメーターでは、変換後にデコーダーの内部状態をクリアするかどうかを示します。 |
GetChars(Byte[], Int32, Int32, Char[], Int32) |
派生クラスでオーバーライドされた場合、指定したバイト配列に格納されているバイト シーケンス、および内部バッファー内のバイトを、指定した文字配列にデコードします。 |
GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) |
派生クラスでオーバーライドされた場合、指定したバイト配列に格納されているバイト シーケンス、および内部バッファー内のバイトを、指定した文字配列にデコードします。 パラメーターでは、変換後にデコーダーの内部状態をクリアするかどうかを示します。 |
GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean) |
派生クラスでオーバーライドされた場合、スパン バイトと内部バッファー内のすべてのバイトのシーケンスを、指定された文字ポインターから始まる文字セットにデコードします。 パラメーターでは、変換後にデコーダーの内部状態をクリアするかどうかを示します。 |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
Reset() |
派生クラスでオーバーライドされた場合、デコーダーを初期状態に戻します。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
拡張メソッド
Convert(Decoder, ReadOnlySequence<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean) |
ReadOnlySequence<T> を UTF-16 エンコード文字に変換し、その結果を |
Convert(Decoder, ReadOnlySpan<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean) |
|
適用対象
こちらもご覧ください
.NET