为什么短*而不是char*为字符串?char*和unsigned char*之间的区别?

Nik*_*s R 0 c unsigned short char character-encoding

正如标题所说,我有两个问题.

编辑:为了澄清,他们实际上char并没有使用和short,他们确保它们是特定typedef的8位和16位.那么实际类型称为UInt8UInt16.

1.问题

iTunes的SDK使用unsigned short*其中一个字符串是必要的.使用它而不是char*/ unsigned char*?有什么好处?如何将其转换为char*,以及使用此类型时有何不同?

2.问题

我只看到char*必须存储字符串的时候.我什么时候应该使用unsigned char*,或者它没有任何区别?

Mr *_*ter 5

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位实体.