NSString に非常に大きな符号なし整数があります。これは 2^64 まで大きくなる可能性があります。これを解析する既存の関数/クラスはありますか?
unsigned long long ということはわかっているのですが、これをどのような方法で解析すればよいのかわかりにくいです。
NSString に非常に大きな符号なし整数があります。これは 2^64 まで大きくなる可能性があります。これを解析する既存の関数/クラスはありますか?
unsigned long long ということはわかっているのですが、これをどのような方法で解析すればよいのかわかりにくいです。
おそらく最も美しい答えではありませんが、次のようなことができるはずです。
#include <stdlib.h>
...
unsigned long long parsedValue = strtoull([yourString UTF8String], NULL, 0);
他の誰かがもっとココアっぽいやり方をしているかもしれません。
これは古いものですが、スティーブン・キャノンの(正しい)答えのもう少しCocoa-eyの変種です:
#import <stdlib.h>
@implementation NSString (MyHelpers)
- (unsigned long long)unsignedLongLongValue {
return strtoull([self UTF8String], NULL, 0);
}
@end
これで、すべての文字列が unsignedLongLongValue セレクターに応答します。
これはうまくいくかもしれませんが、2^63 - 1にしかなりません:
NSScanner *scanner = [NSScanner scannerWithString:numericString];
long long valueFromString;
if(![scanner scanLongLong:&valueFromString]) {
//ERROR
}
NSScanner の scanUnsignedLongLong メソッドはないようです。