Objective C unsigned char 转负整数

Objective C unsigned char to negative int

我要变身

unsigned char x = 0xECint y = -20

unsigned char x = 0xF0int y = -16

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

int y = (int)x

我得到 x = 240,它是 0xF0 的正确十进制表示。我哪里错了?我怎样才能得到负数?

首先将 unsigned char 转换为带符号的 char,然后转到 int 将为您提供所需的结果:

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

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

signed char x1 = (signed char)x;