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

时间:2012-09-29 09:38:04

标签: 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等等 - 不同的结果但不是应该是。

1 个答案:

答案 0 :(得分:14)

您的号码(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