使用TextBox或RichTextBox从图像文件显示原始数据?

时间:2013-06-27 20:19:32

标签: c# textbox richtextbox binary-data

我的程序读取DDS图像文件并将其存储为字节数组。我希望能够以TextBox形式向用户显示原始数据,所以首先我使用以下代码将字节数组转换为字符串:

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

然后我设置了TextBox文本:

textBox.Text = data;

我遇到的问题是文本框没有显示所有数据。以下是它的外观截图:

TextBox view

正如您所看到的,只显示前几个字符。我假设这是因为字符串包含一个null终止符,TextBox将其解释为字符串的结尾。这是我从调试器监视窗口直接复制的字符串中前50个左右字符的复制粘贴:

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

正如您所见,第一个空字符紧跟在“DDS |”之后这解释了为什么所有这些都出现在TextBox中。

我想要显示的内容类似于使用文本编辑器(如Notepadd ++)编辑原始DDS文件时所看到的内容。

在Notepad ++中打开DDS文件会产生以下结果:

Notepad++ view

我的问题是,如何让我的TextBox(或RichTextBox)以与Notepad ++相同的方式显示数据?

1 个答案:

答案 0 :(得分:2)

最简单的解决方案是使用它:

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

这将强制文本框实际显示反斜杠,后跟空值为零的零。或者,您可以使用其他字符或字符串替换空值。