正如标题所说,我有两个问题。
编辑:澄清一下,他们实际上并没有使用 char
和 short
,他们确保它们是 8 位和 16-由特定的 typedef 位。实际类型称为 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 位实体。
关于c - 为什么用 short* 而不是 char* 作为字符串? char* 和 unsigned char* 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9295363/