2012-09-29 34 views
5

我有一个数字字符串,并且观察到其差异性,它的intValue与字符串值有很大的不同。下面的代码:- [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等 - 对不同的结果,但不是它应该的。

+3

你是对的,你到达32位int的极限,但longlongValue应该工作。那么结果是什么? –

+0

尝试使用无符号int(u_int32最大值9,223,372,036,854,775,808) –

+0

你知道'string'实际上是一个NSString并且没有一个NSNumber吗?你可能想要查询这个类。 –

回答

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 
+1

感谢所有的评论和这个答案,我只是很困惑,我应该把什么样的首字母缩放到%之后才能得到长时间的输出......干杯 – Genhain

相关问题