我在NSString @"15"
中有一个数字。我想将其转换为NSUInteger,但我不知道该怎么做......
答案 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]
..