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

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

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

然后我设置TextBox文本:

 textBox.Text = data; 

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

TextBox视图

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

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

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

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

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

Notepad ++视图

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

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

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

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

Interesting Posts