我的程序读取DDS图像文件并将其存储为字节数组。我希望能够以TextBox形式向用户显示原始数据,所以首先我使用以下代码将字节数组转换为字符串:
string data = System.Text.Encoding.ASCII.GetString(bytes);
然后我设置了TextBox文本:
textBox.Text = data;
我遇到的问题是文本框没有显示所有数据。以下是它的外观截图:
正如您所看到的,只显示前几个字符。我假设这是因为字符串包含一个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文件会产生以下结果:
我的问题是,如何让我的TextBox(或RichTextBox)以与Notepad ++相同的方式显示数据?
答案 0 :(得分:2)
最简单的解决方案是使用它:
textbox.Text = data.Replace("\0", @"\0");
这将强制文本框实际显示反斜杠,后跟空值为零的零。或者,您可以使用其他字符或字符串替换空值。