我在 C# 中进行了大量的字符串操作,并且确实需要将字符串每个字符存储一个字节。这是因为我需要在内存中同时存储数 GB 的文本,这会导致内存不足的问题。我确信该文本永远不会包含非 ASCII 字符,因此就我的目的而言,System.String 和 System.Char 将所有内容存储为每个字符两个字节这一事实既不必要又是一个真正的问题。
我即将开始编写自己的 CharAscii 和 StringAscii 类 - 字符串类基本上将其数据保存为 byte[],并公开与 System.String 类似的字符串操作方法。然而,要完成一些看起来非常标准的问题似乎需要做很多工作,所以我真的在这里发帖是为了检查是否还没有更简单的解决方案。例如,是否有某种方法可以让 System.String 在内部将数据存储为我没有注意到的 UTF8,或者其他解决问题的方法?
最佳答案
那么,您可以创建一个包装器,以 UTF-8 字节形式检索数据,并根据需要将片段转换为 System.String,然后反之亦然,将字符串推回内存。编码类将在此处帮助您:
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
var myReturnedString = utf8.GetString(utfBytes);
关于c# - 在 C# 中将字符串存储为 UTF8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12144568/