解析iOS上的64位无符号整数

时间:2010-10-21 06:15:15

标签: cocoa-touch parsing ios unsigned-long-long-int

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

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

3 个答案:

答案 0 :(得分:9)

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

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

其他人可能有更多的可行方式。

答案 1 :(得分:1)

这是一个旧版本,但这里是斯蒂芬·佳能(正确)回答的一个稍微更可靠的变体:

#import <stdlib.h>

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

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

答案 2 :(得分:0)

这可能有效,但只能到达2^63 - 1

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

NSScanner似乎没有scanUnsignedLongLong方法。