2016-03-24 16 views
1

どのようにNSStringからUInt64に変換しますか?例えばNSString to UInt64

UInt64Valueヘルパーメソッドであれば、このようなものは存在していた:

NSString *value = @"1234567"; 
UInt64 convertedValue = [value UInt64Value]; 

私は、iOSプロジェクトでこれを行うにしようとしています。

答えて

6

完全性について別の可能性ピッチに:

NSScanner *scanner = [NSScanner scannerWithString:value]; 
unsigned long long convertedValue = 0; 
[scanner scanUnsignedLongLong:&convertedValue]; 
return convertedValue; 

... 0の値を見つけることと番号でないものを見つけることを区別したい場合は、scanUnsignedLongLongの結果を確認してください。

あなたは、次のよう strtoull(const char *, char **, int)を使用することができます
4
NSString * num = @"123456"; 

NSNumberFormatter * numberFormatter = [[NSNumberFormatter alloc]init]; 
NSNumber * number = [numberFormatter numberFromString:num]; 
unsigned long long valueUInt64 = number.unsignedLongLongValue; 
+0

なぜあなたは[のstringValue longLongValue]の上にこれを使用します。 ? – Alexandru

+0

あなたはunsigned long longを要求しているので、 –

+0

私はこのデータ型に慣れていません。私はそのようなことに遭遇したことがないので、本当に奇妙に聞こえる。 64ビット値のスペースは最大でUInt64を許容しますので、長いものは何ですか? – Alexandru

0

あなたはint64を取得するための別の方法があるlongLongValue

NSString *str = @"23147653105732"; 
UInt64 uint64 = [str longLongValue]; 

UInt64を取得することができます。

NSString *str = @"23147653105732"; 
int64_t int64_t = atoll([str UTF8String]); 
+2

'longLongValue'は' UInt64'ではなく 'Int64'を読み込みます。 – Tommy

0

NSString *value = @"1234567"; 
UInt64 convertedValue = strtoull([value UTF8String], NULL, 0);