NSString到NSUInteger

时间:2010-05-01 11:24:20

标签: cocoa-touch iphone-sdk-3.0 nsstring nsuinteger

我在NSString @"15"中有一个数字。我想将其转换为NSUInteger,但我不知道该怎么做......

4 个答案:

答案 0 :(得分:26)

NSString *str = @"15";
// Extract an integer number, returns 0 if there's no valid number at the start of the string.
NSInteger i = [str integerValue];

如果你真的想要一个NSUInteger,只需投射它,但你可能想要事先测试它。

答案 1 :(得分:18)

NSUInteger当前选择的答案不正确。正如Corey Floyd指出对所选答案的评论,如果该值大于INT_MAX,这将不起作用。更好的方法是使用NSNumber,然后使用NSNumber上的一种方法来检索您感兴趣的类型,例如:

NSString *str = @"15"; // Or whatever value you want
NSNumber *number = [NSNumber numberWithLongLong: str.longLongValue];
NSUInteger value = number.unsignedIntegerValue;

答案 2 :(得分:3)

64位系统上所有这些答案都是错误的。

NSScanner *scanner = [NSScanner scannerWithString:@"15"];
unsigned long long ull;
if (![scanner scanUnsignedLongLong:&ull]) {
  ull = 0;  // Or handle failure some other way
}
return (NSUInteger)ull;  // This happens to work because NSUInteger is the same as unsigned long long at the moment.

使用9223372036854775808进行测试,这不适合签名的long long

答案 3 :(得分:0)

您可以尝试使用[string longLongValue][string intValue] ..