2011-05-03 27 views
6

我有NSString值,我想将其转换为unsigned long。我用下面将NSString转换为无符号长整数

NSString *updateId = [NSString stringWithFormat:@"%@",[tweet updateId]]; 

NSLog(@"%@",[tweet updateId]); 
unsigned long tweetId = [updateId longLongValue]; 
NSLog(@"ButtonPressed: .......%llu",tweetId); 

但它没有返回正确的值代码...

+0

什么回报?那么updatedId返回的数据类型是什么? – Macmade 2011-05-03 07:18:20

+0

updateId正在返回NSstring ..并且我的输出是65278530740695040 2011-05-03 12:47:56.704 MiniTwit [2949:207] ButtonPressed:....... 6071468025620606976 – Abhishek 2011-05-03 07:23:46

+0

要请求支持从NSString读取无符号值,请访问http://bugreport.apple.com并提交雷达:// 2264733对组件'Foundation |“的欺骗X'。 – 2013-01-23 05:46:37

回答

11

可可方式是使用[NSNumberFormater]1

NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init]; 
NSLog(@"%lu", [[formatter numberFromString:updateId] unsignedLongValue]); 
[formatter release]; 

有什么的[鸣叫updateId]类型?
它是否包含任何本地化(例如千分隔符)?
如果是这样,你可以配置NSNumberFormatter实例与setLocale:

+0

[tweet updateid]是NSString类型 – Abhishek 2011-05-03 07:51:06

+0

NSNumberFormatter * formatter = [[NSNumberFormatter alloc] init]; NSLog(@“%lu”,[[formatter numberFromString:updateId] unsignedLongValue]); [_engine deleteUpdate:formatter]; [formatter release];不工作给予警告 – Abhishek 2011-05-03 07:53:51

+1

为什么你在另一个NSString包装呢?您可以直接将[tweet updateId]传递给numberFromString:。 – 2011-05-03 07:55:07

0

您可以尝试从C STDLIB的atol功能:

unsigned long tweetId = atol([ updateId cStringUsingEncoding: NSASCIIStringEncoding ]); 

顺便说一下,你的NSLog应该是lu,而不是llu

+0

lu也返回不正确的值 – Abhishek 2011-05-03 07:32:09

+0

您是否尝试过使用atol? – Macmade 2011-05-03 07:32:47

+0

我应该包含哪个头文件?这是警告NSString可能不会响应CStringUsingEncoding – Abhishek 2011-05-03 07:36:40

0
unsigned long tweetId = [[NSNumber numberWithInteger:[updateId integerValue]] unsignedLongValue]; 
相关问题