0

我正在将项目的 NSString 转换为 int,以便比较时间戳。这是我转换它时从我的 NSLog 得到的响应。

Server Time Stamp = 1363032033711 AND Server Time Stamp CONVERTED: 2147483647

我正在使用此代码进行转换:

NSString *msg = [NSString stringWithFormat:@"%@", message];
NSArray *subString = [msg componentsSeparatedByString:@" "];
NSString *timeStamp = [subString lastObject];
int serverTimeStamp = [timeStamp intValue];
NSLog(@"Server Time Stamp = %@ AND Server Time Stamp CONVERTED: %d", timeStamp, serverTimeStamp);

我不确定为什么转换后的数字如此奇怪,是我的代码有问题,还是将字符串转换为整数?

4

1 回答 1

4

1363032033711太大了。它无法转换为int(在 iOS 上似乎是 32 位长)。如果您在 Google 上搜索2147483647,您会发现它是 32 位有符号 的最大值int。也许这就是- [NSString intValue]它是否发现一个太大而无法转换的数字的方式。

解决方案:使用更广泛的数字类型和NSScanner

NSScanner *scn = [NSScanner scannerWithString:[subString lastObject]];
long long serverTimeStamp;
[scn scanLongLong:&serverTimeStamp];
于 2013-03-11T20:11:03.163 回答