Objective C unsigned char 转负整数
Objective C unsigned char to negative int
我要变身
unsigned char x = 0xEC
在 int y = -20
unsigned char x = 0xF0
在 int 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;
我要变身
unsigned char x = 0xEC
在 int y = -20
unsigned char x = 0xF0
在 int 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;