4

NSString に非常に大きな符号なし整数があります。これは 2^64 まで大きくなる可能性があります。これを解析する既存の関数/クラスはありますか?

unsigned long long ということはわかっているのですが、これをどのような方法で解析すればよいのかわかりにくいです。

4

3 に答える 3

9

おそらく最も美しい答えではありませんが、次のようなことができるはずです。

#include <stdlib.h>
...
unsigned long long parsedValue = strtoull([yourString UTF8String], NULL, 0);

他の誰かがもっとココアっぽいやり方をしているかもしれません。

于 2010-10-21T06:32:42.357 に答える
1

これは古いものですが、スティーブン・キャノンの(正しい)答えのもう少しCocoa-eyの変種です:

#import <stdlib.h>

@implementation NSString (MyHelpers)
    - (unsigned long long)unsignedLongLongValue {
        return strtoull([self UTF8String], NULL, 0);
    }
@end

これで、すべての文字列が unsignedLongLongValue セレクターに応答します。

于 2013-02-24T15:38:09.933 に答える
0

これはうまくいくかもしれませんが、2^63 - 1にしかなりません:

NSScanner *scanner = [NSScanner scannerWithString:numericString];
long long valueFromString;
if(![scanner scanLongLong:&valueFromString]) {
    //ERROR
}

NSScanner の scanUnsignedLongLong メソッドはないようです。

于 2010-10-21T16:23:11.793 に答える