5

我设置了一个应用程序,在其中将 NSString 转换为 char 变量数组,并且尝试将一些字符转换为整数(基本上是为了解析字符串中的数字)。但是当我尝试将它们转换为 int 变量时,它们会突然改变值。

例如:

char thechar = array[7]; //to make sure the issue isn't related to the array

NSLog(@"%c %i %i",thechar,(int) thechar, [[NSNumber numberWithUnsignedChar:thechar] intValue]);

返回这个:

3 51 51

转换它的两种方法(我发现)似乎都将值更改为 51。有谁知道可能发生什么?

4

2 回答 2

12

我想通了:只需将其转换为 NSString,然后获取 intValue。

[[NSString stringWithFormat:@"%c", thechar] intValue];
于 2012-06-22T22:38:24.213 回答
3

51 是文字字符“3”的数值。它可以追溯到 ASCII 标准,尽管许多常见的 Unicode 编码也保留了该值。

您可以非常可靠地减去 48(或“0”)来获得数字:

int num = (int)(numAsChar - '0');

或者,如果要转换整个字符串,可以使用atoi

int num = atoi(myNumberString);
于 2012-06-22T22:21:05.763 回答