2011-08-09 3 views
2

私はiPhoneアプリで作業しています。私は文字列から一連の数字を解析したい。しかし、intValueは本当に変です。iPhone int parsing

私は、その後NSInteger、およびLOにそのintValueを置き、見よ、わたしの整数は2147483647

何の値を割り当てられた何らかの理由で値1304287200000.

の文字列を持っています与えるか?

+0

整数より大きいものを試してみてください;) – Jacob

答えて

4

データ型intは約±20億の範囲で、32ビットの数値です。 1304287200000はその範囲外のマージン分です。

long longの場合はintをスキップする必要があります。これは64ビットタイプであり、必要性をカバーしています。 64ビットタイプの人間が読める明示的な名前はint64_tです。

+0

ありがとうございました。素敵な1日を過ごし、貢献したすべての人に感謝します! –

1

電話番号超える整数制限

2

intは32ビットなので、保持できる最大値は2,147,483,647です。代わりにlongLongValueを試してください。

+0

'-intValue'は' NSInteger'を返すのではなく 'int'を返します。 'NSInteger'と' int'は同じビットサイズにすることができます(そして、実際はiOS上にあります)、それらはすべてのプラットフォーム上にある必要はありません。 – gcbrueckmann

+0

非常に興味深い;私は私の答えを更新しました。ありがとう! –

4

戻り値はINT32_MAXです。解析された値がintタイプをオーバーフローするためです。これはNSString documentationで説明されています。代わりにlongLongValueを試してください。LLONG_MAXは十分に大きいはずです。