2012-09-29 35 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

相關問題