Converting string to int changes the value

2020-02-16 04:57发布

问题:

I'm trying to convert a string value I retrieved from an XML parser into an integer. Unfortunately, I'm finding that the integer value is not reflecting the number in the string, and I can't figure out why. Here is my code:

int maxTweetID = [[[_dataArray lastObject]tweetID]intValue];

NSLog(@"String Value of tweet ID: %@",[[_dataArray lastObject]tweetID]);
NSLog(@"Int Value of tweet ID: %i",[[[_dataArray lastObject]tweetID]intValue]);

and here is what I'm getting from the debugger:

2012-05-15 10:58:44.395 nearYou[2460:707] String Value of tweet ID: 202425636143370242
2012-05-15 10:58:44.396 nearYou[2460:707] Int Value of tweet ID: 2147483647

Why is this?

回答1:

The number is much too large to fit in a 32 bit int. What you want to do is use a long instead:

long maxTweetID = [[[_dataArray lastObject]tweetID]longValue];

EDIT:

You actually need to use long long in Objective-C:

long long maxTweetID = [[[_dataArray lastObject]tweetID]longLongValue];


回答2:

The number in the string is too large to be stored as an integer. The highest integer possible with 32 bits is 2.147.483.647. Try using a long.