Я думаю, что рос в различном поколении, чем больше всего здесь....
Одна из самых влиятельных книг я читал, был APUE.
Или в значительной степени что-либо W. Richard Stevens.
Есть много способов сделать это. Следующее является наиболее прагматичным:
NSString *numStr = [NSString stringWithFormat:@"%llu", [myNum unsignedLongLongValue]];
// .. code and time in between when numStr was created
// .. and now needs to be converted back to a long long.
// .. Therefore, numStr used below does not imply the same numStr above.
unsigned long long ullvalue = strtoull([numStr UTF8String], NULL, 0);
Это делает несколько разумных предположений, таких как numStr
будет содержать только числовые цифры и содержит «допустимое» беззнаковое длинное длинное значение. Недостатком этого подхода является то, что UTF8String
создает то, что по существу составляет [[numStr dataUsingEncoding: NSUTF8StringEncoding] bytes]
, или, другими словами, что-то вроде строк из 32 байтов автоматически освобожденной памяти на вызов. В подавляющем большинстве случаев это не проблема.
Пример того, как добавить что-то вроде unsignedLongLongValue
в NSString
, что одновременно очень быстро и не использует автоматически освобожденную память как побочный эффект, взгляните на конец моего (длинного) ответа на этот вопрос SO . В частности, пример реализации rklIntValue
, который потребует только тривиальных изменений для реализации unsignedLongLongValue
.
Дополнительную информацию о strtoull
можно найти на его странице руководства.