NSStringに格納し、文字列から取得したいunsigned longlong値があります。
最初はNSNumberに値があり、これを使用して文字列を取得しています
NSString *numStr = [NSString stringWithFormat:@"%llu", [myNum unsignedLongLongValue]];
ここで、myNumはNSNumberです。
NSStringからNSNumberを取得するには、最初にunsigned longlong値を取得する必要があります。ただし、NSStringクラスにはそれを行うメソッドはありません(unsigned long long値ではなく、long long値を取得するためのメソッドがあります)。
誰かが値をNSNumber変数に戻す方法を教えてもらえますか?.
ありがとう。
これを達成する方法はたくさんあります。以下は最も実用的です:
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 longlong値が含まれるなどのいくつかの合理的な仮定が行われます。このアプローチの欠点は、UTF8String
が本質的に[[numStr dataUsingEncoding:NSUTF8StringEncoding] bytes]
に相当するもの、つまり、呼び出しごとに自動解放された32バイトのメモリのラインに沿ったものを作成することです。ほとんどの用途では、これはまったく問題ありません。
unsignedLongLongValue
のようなものをNSString
に追加する方法の例として、非常に高速で、副作用として自動解放されたメモリを使用しない場合は、 this SO質問 。具体的には、rklIntValue
の実装例。これは、unsignedLongLongValue
を実装するためにわずかな変更のみを必要とします。
strtoull
の詳細については、manページを参照してください。