2011-08-09 50 views
2

我正在開發iPhone應用程序。我想從字符串中解析一系列數字。但是,intValue的行爲真的很奇怪。iPhone int解析

我有值的字符串1304287200000.

我再放置的,該進的intValue一個NSInteger,你瞧,我的整數分配的2147483647

值某些原因是什麼原因呢?

+0

嘗試使用更大的東西,然後整數;) – Jacob

回答

4

數據類型int是一個32位數值,範圍大約爲±2十億。 1304287200000在該範圍之外。

您需要跳過intlong long這是一個64位類型,並涵蓋您的需要。對於64位類型,更易於理解的人名是int64_t

+0

謝謝,應該想出了一個,哈:)。祝你有個愉快的一天,並感謝所有貢獻的人! –

1

你的數目超過整數限制

2

int是32位,所以它可容納的最大值是2,147,483,647。改爲嘗試longLongValue

+0

'-intValue'不會返回'NSInteger'而是'int'。 'NSInteger'和'int'可以是相同的位大小(事實上在iOS上,它們是),它們不需要在所有平臺上。 – gcbrueckmann

+0

非常有趣;我已經更新了我的答案。謝謝! –

4

你回來的是INT32_MAX,因爲解析的值溢出了int類型。這在NSString documentation中有解釋。請改爲longLongValueLLONG_MAX應該足夠大。