2

binaryreader を使用して読み取るときに、カスタムエンコーディングを使用したり、base16 文字 (日本語の SHIFT-JIS のように 2 バイト文字) を変換したりできますか? つまり、それらの読み取り中に、0x00ff がある場合、読み取り時と書き込み時 (ファイルの編集、binarywriter を使用した書き込み) のときに、それを "\et" に変換します。

4

1 に答える 1

4

独自のエンコードとデコードを実装したいと思うので、アルゴリズムに依存する実装方法に問題があります。デフォルトでEncodingは、Unicode, BigEndianUnicode, UTF-8, .... ご覧のとおり、実際のandEncodingを実行するためのいくつかのメソッドを備えたクラスにすぎないため、カスタムエンコーディングは一切必要ないことを提案しました。これは、よく知られている一般的なエンコーディングを処理するのに非常に役立ちます...ただし、独自のエンコーディングについては、次のようにほとんどすべてのコア関数を実装する必要があります。encodingdecodingUnicode

public class CustomEncoding : Encoding
{
    //NOTE: There are some abstract members requiring you to implement or declare in this derived class.
    public override byte[] GetBytes(string s)
    {
        //Your code goes here            
    }
    public override string GetString(byte[] bytes)
    {
        //Your code goes here
    }
    //And many other virtual (overridable) methods which you can override to implement your custom Encoding fully
}

それが役に立てば幸い!

于 2013-06-30T01:26:45.733 に答える