字符串是否始终是Little Endian Unicode?

ABCD人

我知道字符串以Unicode格式存储。我还听说即使系统是Big Endian,字符串也始终是Little Endian Unicode。我的问题是这样的:

如果系统也是Big Endian,是否以Big Endian Unicode表示字符串?

顺便说一句,当写入需要使用Little Endian Unicode的文件时,我正在使用它来提高性能。

彼得·杜尼奥(Peter Duniho)

CLI规范说:

I II.1.1.3字符数据类型

CLI字符类型在内存中占用2个字节,并使用UTF-16编码表示Unicode代码单元。

不需要以特定的字节顺序。并且有充分的理由期望字节顺序将与当前体系结构的其他数字类型的字节顺序匹配。也就是说,在一台大端计算机上,人们会期望将char类型存储为大端16位值。

尽管它不是权威性文档,但我会注意到,有几个人回答或评论了如何在不手动指定编码的情况下如何在C#中获得一致的字节字符串表示形式?分享这种信念,即char类型的字节序取决于平台架构。在该问题的注释和答案中有几句话声称char在big-endian系统上是big-endian。

在我看来,如果您的体系结构的字节序很重要,则可以访问big-endian体系结构的CLI实现,并且可以轻松地自己验证用于该char类型的字节顺序您是否已努力进行此类验证?

综上所述,您很有可能不需要知道char类型的字节顺序.NET提供了用于多种编码的字符编码器,包括UTF16-LE和UTF16-BE。使用char类型本身时,字节顺序无关紧要,并且在字节顺序很重要的情况下,可以使用适当的Encoding类型来强制执行特定的顺序如果您认为自己所处的情况是这些一般准则的例外,那么最好发布一个描述确切情况是什么以及为什么您认为这是一般准则的例外的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Little Endian与Big Endian架构

将Little Endian转换为Big Endian

检查系统为Little Endian或Big Endian

如何在 Python 中从二进制文件读取和写入“Unicode(UTF-16 little endian)”文本?

是否可以安全地假设float或double NaN始终是字符串的“ nan”?

Little Endian和nasm推送

Big Endian和Little Endian支持字节排序

Unicode,Unicode Big Endian还是UTF-8?有什么区别?哪种格式更好?

为什么“ user_input”始终是字符串?

(java)在文件little endian中写入

Golang使用MD5编码字符串UTF16 little endian和hash

什么是unicode字符串?

Unicode字符串转换

Python Unicode 字符串

检查Java字符串是否包含Unicode字符

如何检查字符串是否等于unicode字符?

如何确定字符串是否转义为unicode

(VIM)vimgrep是否能够搜索unicode字符串

Unicode字符串到Unicode字符,Python 3

将 Little Endian 转换为 Big Endian - 未获得预期结果

示例中big-endian和little-endian处理器之间的区别

如何将boost :: multiprecision :: cpp_int从big endian更改为little endian

为什么python的结构认为little-endian和big-endian暗示了不同的长度?

在Intel上使用ByteBuffers时,我应何时选择Little Endian与Big Endian?

在ARM中将16位big-endian快速转换为little-endian

可以将big-endian哈希与Little-endian哈希进行比较吗?

将 little Endian hexdump 输出转换为 Big Endian(C 编程)的问题

将Big Endian顺序的32位变量转换为Little Endian

在Big Endian和Little Endian机器中解释32位整数时的困惑