Nik*_*s R 0 c unsigned short char character-encoding
正如标题所说,我有两个问题.
编辑:为了澄清,他们实际上char
并没有使用和short
,他们确保它们是特定typedef的8位和16位.那么实际类型称为UInt8
和UInt16
.
1.问题
iTunes的SDK使用unsigned short*
其中一个字符串是必要的.使用它而不是char*
/ unsigned char*
?有什么好处?如何将其转换为char*
,以及使用此类型时有何不同?
2.问题
我只看到char*
必须存储字符串的时候.我什么时候应该使用unsigned char*
,或者它没有任何区别?
unsigned short
数组可以与宽字符串一起使用 - 例如,如果你有UTF-16编码的文本 - 虽然我希望wchar_t
在那些情况下看到.但他们可能有他们的理由,比如在MacOS和Windows之间兼容.(如果我的来源是正确的,MacOS' wchar_t
是32位,而Windows'是16位.)
您可以通过调用相应的库函数在两种类型的字符串之间进行转换.哪种功能合适取决于具体情况.SDK不附带一个吗?
而char
不是unsigned char
,那么,所有的字符串在历史上一直被定义的char
,所以切换到unsigned char
会引入不兼容性.
(切换到signed char
也会导致不兼容,但不知道多少......)
编辑现在问题已被编辑,让我说在输入答案之前我没有看到编辑.但是,UInt16
由于上述原因,是比wchar_t更好地表示16位实体.