24

NSStringに格納し、文字列から取得したいunsignedlonglong値があります。

最初はNSNumberに値があり、これを使用して文字列を取得しています

NSString *numStr = [NSString stringWithFormat:@"%llu", [myNum unsignedLongLongValue]];

ここで、myNumはNSNumberです。

NSStringからNSNumberを取得するには、最初にunsignedlonglong値を取得する必要があります。ただし、NSStringクラスにはそれを行うためのメソッドはありません(unsigned long long値ではなく、long long値を取得するためのメソッドがあります)。

誰かが値をNSNumber変数に戻す方法を教えてもらえますか?

ありがとう。

4

1 に答える 1

59

これを達成する方法はたくさんあります。以下は最も実用的なものです。

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 ページを参照してください。

于 2009-07-25T09:24:46.103 に答える