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

Gen*_*ain 5 objective-c nsstring ios

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

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

给出一个输出:

"ID 100004378121454"
"ID as integer 2147483647"
Run Code Online (Sandbox Code Playgroud)

我能做出的唯一合乎逻辑的猜测是,字符串太长而无法转换为int...在任何情况下我都尝试过longLongValue这样 - 对不同的结果而不是它应该是的结果.

ale*_*oot 14

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

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

输出:

ID              100004378121454
ID as long long 100004378121454
Run Code Online (Sandbox Code Playgroud)