Разбор 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.