objective-c - -[NSString intValue] 返回与字符串完全不同的值

标签 objective-c ios nsstring

我有一个数字字符串,并观察到一个差异,它的 intValue 与其字符串值有很大不同。代码如下:

NSString *string = [result objectForKey:@"id"];
NSLog(@"ID %@",string);
NSLog(@"ID as integer %i",[string intValue]);

给出输出:

"ID 100004378121454"
"ID as integer 2147483647"

我能做出的唯一合乎逻辑的猜测是字符串太长而无法转换为 int...无论如何我尝试了 longLongValue 等等 - 到不同的结果,但不是应有的结果。

最佳答案

您的数字 (100004378121454) 比简单的 int 可以处理的数字大,在这种情况下您必须使用 long long 类型(以免您的数字被截断为 int32 最大值):

NSString *string = @"100004378121454";
NSLog(@"ID %@",string);
NSLog(@"ID as long long %lli",[string longLongValue]); 

输出:

ID              100004378121454
ID as long long 100004378121454

关于objective-c - -[NSString intValue] 返回与字符串完全不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12651621/

相关文章:

ios - Xcode Apple Mach-O 链接器 (id) 警告

objective-c - 如何获得 MacOS 上特定用户的首选语言?

ios - 无法推断通用参数

ios - ios webviews 在打开它们之前检查恶意软件的 url 吗?

iphone - 如何从网页获取数据到NSString

ios - NSJSON序列化和表情符号

ios - 无法写入 containerURLForSecurityApplicationGroupIdentifier?

ios - 核心数据没有保存任何东西,但没有给出错误?

ios - 我们仍然能够针对 iPad 1 的应用程序吗?

ios - Xcode 中的 "Dead Store"警告