Мое приложение вручено NSString
содержа unsigned int
. NSString не имеет [myString unsignedIntegerValue];
метод. Я хотел бы смочь вынуть значение из строки, не искажая его и затем поместить его в NSNumber
. Я пытаюсь сделать это как так:
NSString *myUnsignedIntString = [self someMethodReturningAString];
NSInteger myInteger = [myUnsignedIntString integerValue];
NSNumber *myNSNumber = [NSNumber numberWithInteger:myInteger];
// ...put |myNumber| in an NSDictionary, time passes, pull it out later on...
unsigned int myUnsignedInt = [myNSNumber unsignedIntValue];
Будет вышеупомянутое потенциально "отключать" конец большого unsigned int
так как я должен был преобразовать его в NSInteger
сначала? Или это смотрит хорошо для использования? Если это отключит конец его, как насчет следующего (что-то вроде клуджа, я думаю)?
NSString *myUnsignedIntString = [self someMethodReturningAString];
long long myLongLong = [myUnsignedIntString longLongValue];
NSNumber *myNSNumber = [NSNumber numberWithLongLong:myLongLong];
// ...put |myNumber| in an NSDictionary, time passes, pull it out later on...
unsigned int myUnsignedInt = [myNSNumber unsignedIntValue];
Спасибо за любую справку можно предложить!:)
Первая версия усекается, а вторая должна подойти, если ваше число действительно вписывается в беззнаковое int - см., Например, «Размер и выравнивание типа данных» .
Однако вы должны создать NSNumber
, используя + numberWithUnsignedInt
.
Если вы знаете, что кодировка подходит, вы также можете просто воспользоваться C-библиотеками:
unsigned n;
sscanf([str UTF8String], "%u", &n);