Byte array to text for ScintillaNET
我正在用C语言编写一个Windows窗体应用程序。该应用程序允许用户从列表框中选择源代码文件,并使用scintillanet以彩色代码显示它们。这些文件在数据库中保存为字节数组。我已经设法将硬盘上的文件转换为字节数组并存储它。用户还应该能够编辑代码,然后将其保存到数据库中,而不必首先将文件下载到本地硬盘上,我不知道如何处理这个问题。
基本上,我想保存scintillnet控件中的文本,并将其转换为字节数组。另一种方法是,取一个字节数组并打印出文本,就像它最初出现在闪烁网上一样。
您可以使用System.Text中的"Encoding"类。
1 | System.Text.Encoding.Unicode.GetBytes("Example"); |
这将返回一个字节数组,其中的字节相当于使用Unicode编码的文本"字符串"。还有其他可用的编码,但我建议使用Unicode,因为它支持更多字符(例如,在Windows Charmap中找到的任何字符)。在我的例子中,是因为我是拉丁语,某些字母没有UTF格式,我对ASCII有疑问。
现在要从字节数组转换为字符串,请使用:
1 2 | byte[] exampleByteArray = MemStream.ToArray(); System.Text.Encoding.Unicode.GetString(exampleByteArray); |
此代码将返回以前在内存流中保存为字节数组的字符串。您可以使用其他方法加载字节数组,在这种情况下,您将从数据库加载它并调用System.Text.Encoding.Unicode.GetString()。
我相信您正在寻找System.Text.Encoding命名空间…
1 2 3 4 5 6 7 8 | // a sample string... string example ="A string example..."; // convert string to bytes byte[] bytes = Encoding.UTF8.GetBytes(example); // convert bytes to string string str = System.Text.Encoding.UTF8.GetString(bytes); |