用ASCII编译的C#字符串

时间:2016-09-10 15:57:18

标签: c#

从我看到的,C#中的每个字符串都被编译成unicode。

aUnableToParseL:                        // DATA XREF: test.main__Main+38o
unicode <Unable to parse local IPv4s.>,0

我想知道,有没有办法告诉编译器将所有字符串编译成ASCII格式? (每个字符1个字节)

2 个答案:

答案 0 :(得分:1)

正如其他人提到的,您可以将ASCII保存在文本文件中,甚至可以将其作为资源添加到项目中,以便将其包含在可执行文件中。您甚至可以更疯狂地压缩ASCII并将其添加为资源。

这可以减少内存消耗,但它也会增加 CPU使用率并使执行速度慢一些。可能程序中几乎所有方法都接受.NET UTF-16 System.String,因此必须将ASCII编码为使用CPU的System.String

这是优化中的常规(但并非总是)权衡 - 更快,更大或更小,更慢。

有办法避免编码。例如,使用接受ANSI字符串What is the difference between the `A` and `W` functions in the Win32 API?

的winapi

如果您更改Console.OutputEncoding Print ASCII line art characters in C# console application

,我不确定是否有任何编码

答案 1 :(得分:0)

您可以将字符串存储为字节数组,然后根据需要将它们转换为char数组或string

只需使用ASCIIEnconding命名空间中的System.Text类。相关方法是:

 char[] GetChars(byte[] bytes);
 string GetString(byte[] bytes);

当然charstring是UTF-16,所以你并没有真正获得太多收益,因为你最终会付出代价&#34;价格&#34;你试图避免;无论是在可执行文件大小还是在运行时内存中。

最重要的是,我不确定你为什么要这样做,特别是在托管环境中它似乎毫无意义;如果您处于这种资源优化水平,那么在完全不同的环境中可能会更好。