4

我在 NSString 中有非常大的无符号整数。这可能大到 2^64。是否有解析这个的现有函数/类?

据我所知,它是 unsigned long long 值,但是,很难知道我应该使用哪种方法来解析它。

4

3 回答 3

9

也许不是最漂亮的答案,但你应该能够做这样的事情:

#include <stdlib.h>
...
unsigned long long parsedValue = strtoull([yourString UTF8String], NULL, 0);

其他人可能有更可可的方式来做这件事。

于 2010-10-21T06:32:42.357 回答
1

这是一个旧的,但这是斯蒂芬佳能(正确)答案的一个稍微更多的 Cocoa-ey 变体:

#import <stdlib.h>

@implementation NSString (MyHelpers)
    - (unsigned long long)unsignedLongLongValue {
        return strtoull([self UTF8String], NULL, 0);
    }
@end

现在所有字符串都会响应 unsignedLongLongValue 选择器。

于 2013-02-24T15:38:09.933 回答
0

这可能有效,尽管它只能达到2^63 - 1

NSScanner *scanner = [NSScanner scannerWithString:numericString];
long long valueFromString;
if(![scanner scanLongLong:&valueFromString]) {
    //ERROR
}

NSScanner 似乎没有 scanUnsignedLongLong 方法。

于 2010-10-21T16:23:11.793 回答