これを達成する方法はたくさんあります。以下は最も実用的なものです。
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
これにより、数字のみが含まれ、「有効な」unsigned long long 値が含まれているなど、いくつかの合理的な仮定が行われます。このアプローチの欠点は、UTF8String
本質的に に相当するもの[[numStr dataUsingEncoding:NSUTF8StringEncoding] bytes]
、つまり、呼び出しごとに 32 バイトの自動解放メモリに沿ったものを作成することです。ほとんどの場合、これはまったく問題ありません。
unsignedLongLongValue
そのようなものを追加する方法の例についてNSString
は、非常に高速であり、副作用として自動解放されたメモリを使用しないため、この SO の質問に対する私の (長い) 回答の最後をご覧ください。具体的には の実装例rklIntValue
ですunsignedLongLongValue
。
詳細についてstrtoull
は、man ページを参照してください。