Разбор 64-битного целого числа без знака на iOS

У меня очень большое целое число без знака в NSString. Это может быть большим до 2^64. Существуют ли существующие функции / классы, анализирующие это?

Как я знаю, это длинное беззнаковое длинное значение, но трудно понять, какой метод мне следует использовать для его анализа.

3 ответа

Решение

Возможно, не самый красивый ответ, но вы должны быть в состоянии сделать что-то вроде этого:

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

У кого-то еще есть способ сделать это с какао-глазами.

Это старый, но вот немного более какао-вариант варианта Стивена Канона (правильный):

#import <stdlib.h>

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

Теперь все строки будут реагировать на селектор unsignedLongLongValue.

Это может сработать, хотя доходит только до 2 ^ 63 - 1:

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

Похоже, что для NSScanner не существует метода scanUnsignedLongLong.

Другие вопросы по тегам