关于c#:Byte数组到ScintillaNET的文本

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);