2

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

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

然后我设置 TextBox 文本:

textBox.Text = data;

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

文本框视图

如您所见,仅显示前几个字符。我假设这是因为字符串包含一个空终止符,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++ 显示数据相同的方式显示数据?

4

1 回答 1

2

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

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

这将强制文本框实际显示一个反斜杠,后跟一个零,即空值所在的位置。或者,您可以将空值替换为其他字符或字符串。

于 2013-06-27T20:42:06.127 回答