我正在将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);
我不确定转换后的数字为何如此奇怪,我的代码出现问题,还是将字符串转换为整数?
答案 0 :(得分:4)
1363032033711
太大了。它无法转换为int
(在iOS上看起来是32位长)。如果您在Google上搜索2147483647
,则会发现它是32位签名int
的最大值。也许- [NSString intValue]
表明它是否发现了一个太大而无法转换的数字。
解决方案:使用更广泛的类型和NSScanner
:
NSScanner *scn = [NSScanner scannerWithString:[subString lastObject]];
long long serverTimeStamp;
[scn scanLongLong:&serverTimeStamp];