Question

I have very big unsigned integral number in NSString. This may be big to 2^64. Is there an existing functions/classes parsing this?

As I know, it's unsigned long long value, but, It's hard to know what kind of method should I use to parse this.

Was it helpful?

Solution

Perhaps not the prettiest answer, but you should be able to do something like this:

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

Someone else might have a more cocoa-ey way of doing it.

OTHER TIPS

This is an old one but here's a slightly more Cocoa-ey variant of Stephen Canon's (correct) answer:

#import <stdlib.h>

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

Now all strings will respond to the unsignedLongLongValue selector.

This might work, though it only gets to 2^63 - 1:

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

There doesn't appear to be a scanUnsignedLongLong method for NSScanner.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top