Objective C unsigned char to negative int

时间:2015-05-01 19:18:53

标签: objective-c int unsigned-char

我要改造

unsigned char x = 0xEC

中的

int y = -20 unsigned char x = 0xF0

中的

int y = -16

如果我这样投(假设x = 0xF0

int y = (int)x

我获得的x = 2400xF0的正确十进制表示。哪里错了?我怎样才能得到负数?

1 个答案:

答案 0 :(得分:2)

首先将unsigned char转换为已签名的char,然后转到int将为您提供所需的结果:

unsigned char x = 0xEC;
char x1 = (char)x;
int x2 = x1;

正如CRD指出的那样,C规范留下了char可以是有符号或无符号的事实,因此这里最安全的解决方案是明确的。

signed char x1 = (signed char)x;