Objective C - 从NSString到Int的类型转换

Jim*_*ery 19 casting objective-c

我有一些Objective C代码,我将其NSString转换为int:

NSString *a=@"123abc";
NSInteger b=(int) a;
NSLog(@"b: %d",b);
Run Code Online (Sandbox Code Playgroud)

NSLog产生此输出:

b: 18396
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释为什么会这样吗?

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

Cfr*_*Cfr 35

你有指向NSString对象的指针的整数值.要将字符串解析为整数,您应该:

NSString *a = @"123abc";
NSInteger b = [a integerValue];
Run Code Online (Sandbox Code Playgroud)


gio*_*shc 10

要获得数值,请使用:

int val = [stringObj intValue];
Run Code Online (Sandbox Code Playgroud)

或者NSInteger:

NSInteger val = [stringObj integerValue];
Run Code Online (Sandbox Code Playgroud)


rck*_*nes 5

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

同样在铸造它时最好使用NSIntegerinstate int.因为当使用64位操作系统时,a NSInteger将是64位.