5

intValue数値文字列があり、文字列値と大きく異なる不一致を観察しました。以下のコード:

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

出力を与えます:

"ID 100004378121454"
"ID as integer 2147483647"

私ができる唯一の論理的な推測は、文字列が長すぎて変換できないということintです...いずれにせよ、私は試しlongLongValueてみましたが、異なる結果になりましたが、本来あるべき結果ではありませんでした。

4

1 に答える 1

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
于 2012-09-29T09:59:48.827 に答える