字符串长度的高位标志

问题描述

There is an old article讨论.NET / C#中的一些字符串内部。有趣的花絮之一:

m_stringLength
这是字符串的逻辑长度,由String.Length返回。 因为许多高位用于附加标志以提高性能,所以字符串的最大长度被限制为一个比32位系统的UInt32.Max小得多的限制。其中一些标志指示字符串包含简单字符,例如纯ASCII,并且不需要调用复杂的UNICODE算法进行排序和比较测试。

我知道BinaryReader does read strings as length-prefixed with 7bit-encoded integer,是否意味着多余的空间用于上述字符串标志(0-ASCII,1-宽)?

从2.0版及更高版本开始,这与单声道相关吗?我正在围绕一个字符串编写一个简单的自定义包装程序,以使其可变,尽管该字符串将不用于排序或比较(目前为止)-我想知道是否应该优先分配用ASCII或UNICODE填充的新字符串(即,如果我知道/假定内容)char,则默认情况下会设置该标志。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)