苹果的文件指出
字符串对象实现为 Unicode 字符数组
但是,unichar
很可能在unsigned short
幕后的数据类型的大小只有 16 位,这使得无法用unichar
. 我如何在脑海中调和这两个事实?
苹果的文件指出
字符串对象实现为 Unicode 字符数组
但是,unichar
很可能在unsigned short
幕后的数据类型的大小只有 16 位,这使得无法用unichar
. 我如何在脑海中调和这两个事实?
您是正确的,Apple 的文档在真正表示 UTF-16 代码点时错误地引用了 Unicode 字符。
在 Unicode 的早期,人们希望它不会超过 16 位,但它确实做到了。Apple 和 Microsoft(可能还有其他公司)都使用 16 位整数来表示“Unicode 字符”,即使某些字符必须由代理对表示。
处理这种情况的各种方法NSString
(加上组合字符)并返回给定字符的范围。例如-rangeOfCharacterFromSet:...
和-rangeOfComposedCharacterSequences...
。
unichar
数据类型表示。“字符串对象被实现为 Unicode 字符数组”并不意味着它在源代码中存储为unichar *
. 你不知道它是如何实现的,是吗?unichar
不是无符号短线怎么办?如果它是 32 位或 64 位数据类型怎么办?