2

私のプログラムは、DDS イメージ ファイルを読み取り、それをバイト配列として格納します。ユーザーに生データを TextBox フォームで表示できるようにしたいので、最初に次のコードを使用してバイト配列を文字列に変換します。

string data = System.Text.Encoding.ASCII.GetString(bytes);

次に、TextBox テキストを設定します。

textBox.Text = data;

私が抱えている問題は、テキスト ボックスにすべてのデータが表示されていないことです。これがどのように見えるかのスクリーンショットです:

テキストボックス ビュー

ご覧のとおり、最初の数文字のみが表示されます。これは、テキスト ボックスが文字列の末尾として解釈するヌル ターミネータが文字列に含まれているためであると想定しています。これは、デバッガーのウォッチ ウィンドウから直接コピーした文字列の最初の 50 文字程度のコピー ペーストです。

DDS |\0\0\0\a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\

ご覧のとおり、最初のヌル文字は「DDS |」の直後にあります。これが、TextBox に表示されるすべての理由を説明しています。

表示したい内容は、未加工の DDS ファイルを Notepadd++ などのテキスト エディターで編集した場合に表示されるものと似ています。

Notepad++ で DDS ファイルを開くと、次のようになります。

メモ帳++ビュー

私の質問は、メモ帳 ++ が表示するのと同じ方法で TextBox (または RichTextBox) にデータを表示するにはどうすればよいですか?

4

1 に答える 1

2

最も簡単な解決策は、これを使用することです。

textbox.Text = data.Replace("\0", @"\0");

これにより、テキストボックスに実際にバックスラッシュが表示され、その後に null がある場所にゼロが表示されます。または、ヌルを他の文字または文字列に置き換えることもできます。

于 2013-06-27T20:42:06.127 に答える