Не могу получить беззнаковое длинное значение NSNumber - PullRequest
6 голосов
/ 23 января 2010

Я хочу получить беззнаковое длинное значение NSNumber. Я не знаю почему, но это не работает. Вот что я сделал:

NSString * stern = [idd objectAtIndex:indexPath.row]; // get a String with Number from a NSArray
NSNumberFormatter * lols = [[NSNumberFormatter alloc] init];
NSNumber * iddd = [lols numberFromString:stern];
NSLog(@"%@", iddd); // I get the right number: 8084143463
unsigned long fooo = [iddd unsignedLongValue];
NSLog(@"%lu", fooo); // I get the wrong number: 3789176167
[twitterEngine deleteUpdate:fooo];

Ответы [ 2 ]

9 голосов
/ 23 января 2010
8084143463 == 0x1e1da3d67
3789176167 == 0x0e1da3d67

Размер long в 64-битной системе составляет 8 байтов. Размер long в 32-битной системе (например, iPhone) составляет 4 байта. Вам нужно использовать long long на iPhone, чтобы сохранить это значение.

3 голосов
/ 23 января 2010

Ваше значение больше максимального значения, которое может содержать беззнаковая длинная (2 ^ 32 - 1 == 4 294 967 295) в 32-разрядном режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...