如何解决字符串是否始终是Little Endian Unicode?
我知道字符串以Unicode格式存储。我还听说即使系统是Big Endian,字符串也始终是Little Endian Unicode。我的问题是这样:
如果系统也是Big Endian,那么是否使用Big Endian Unicode表示的字符串?
顺便说一句,在写入需要使用Little Endian Unicode的文件时,我正在使用它来提高性能。
解决方法
I II.1.1.3字符数据类型
CLI字符类型在内存中占用2个字节,并使用UTF-16表示Unicode代码单元 编码。
不要求它以特定的字节顺序。并且有充分的理由期望字节顺序将与当前体系结构的其他数字类型的字节顺序匹配。即在big-endian计算机上,人们期望char
类型存储为big-endian 16位值。
尽管它不是权威性文档,但我会注意到,对How do I get a consistent byte representation of strings in C# without manually specifying an encoding?进行了回答或评论的几个人都认同这种信念,即char
类型的字节序取决于平台体系结构。在该问题的评论和答案中有几句话声称char
在大端系统上是大端的。
在我看来,如果您的体系结构的字节序很重要,则可以访问Big-endian体系结构的CLI实现,并且可以轻松地自己验证用于{{1}的字节顺序}类型。您是否已努力进行此类验证?
所有这些,很有可能您不需要知道char
类型的字节顺序。 .NET提供了用于多种编码的字符编码器,包括UTF16-LE和UTF16-BE。在使用char
类型本身时,字节顺序无关紧要,在字节顺序很重要的情况下,可以通过使用适当的char
类型来强制执行特定的顺序。如果您认为自己所处的情况是这些一般准则的例外,那么最好发布一个描述该情况是什么以及为什么您认为这是一般准则的例外的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。