22

我有这段 Objective C 代码,我将 aNSString转换为int

NSString *a=@"123abc";
NSInteger b=(int) a;
NSLog(@"b: %d",b);

NSLog产生此输出:

b: 18396

谁能向我解释为什么会这样?

我在印象类型下将字符串转换为整数会从字符串中获取数值。

4

4 回答 4

39

你在那里有指向NSString对象的指针的整数值。要将字符串解析为整数,您应该这样做:

NSString *a = @"123abc";
NSInteger b = [a integerValue];
于 2012-10-24T09:09:13.617 回答
12

要获得数值,请使用:

int val = [stringObj intValue];

或为NSInteger

NSInteger val = [stringObj integerValue];
于 2012-10-24T09:09:22.740 回答
5

当您将对象转换为整数时,您将获得指向内存地址的指针。您可以调用来[a integerValue]获取字符串的整数值。

此外,在铸造时最好使用NSIntegerinstate of int。因为当使用 64 位操作系统时,aNSInteger将是 64 位。

于 2012-10-24T09:07:59.910 回答
0

或者使用 Objective-C 文字语法:

@([a intValue]);
于 2012-10-24T09:14:24.787 回答