Ios NSString到UInt64

Ios NSString到UInt64,ios,objective-c,nsstring,uint64,Ios,Objective C,Nsstring,Uint64,如何从NSString转换为UInt64 例如,如果存在UInt64Valuehelper方法,则如下所示: NSString *value = @"1234567"; UInt64 convertedValue = [value UInt64Value]; 我正在一个iOS项目中尝试这样做。您可以通过longValue获得UInt64 NSString * num = @"123456"; NSNumberFormatter * numberFormatter = [[NSNumberFo

如何从
NSString
转换为
UInt64

例如,如果存在
UInt64Value
helper方法,则如下所示:

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

我正在一个iOS项目中尝试这样做。

您可以通过
longValue
获得
UInt64

NSString * num = @"123456";

NSNumberFormatter * numberFormatter = [[NSNumberFormatter alloc]init];
NSNumber *  number = [numberFormatter numberFromString:num];
unsigned long long valueUInt64 = number.unsignedLongLongValue;
NSString *str = @"23147653105732";
UInt64 uint64 = [str longLongValue];
获取
int64
的另一种方法是:

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

提出另一种完整性的可能性:

NSScanner *scanner = [NSScanner scannerWithString:value];
unsigned long long convertedValue = 0;
[scanner scanUnsignedLongLong:&convertedValue];
return convertedValue;
。。。如果要区分查找0的值和查找非数字的值,请检查scanUnsignedLongLong上的结果。

您可以使用
strtoull(const char*,char**,int)
,如下所示:

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

我想这取决于数字。如果数字很大,32位不能容纳。那么它将存储在2个32位部分。你还可以进行进一步的搜索:)在C语言中,
long
是32位(在大多数平台上)。为确保获得64位值,存在
long
类型。要获得无符号版本,只需在类型前面加上
无符号
,就像对任何整数类型所做的那样。不幸的是,这个答案不正确,请使用
@“18446744073709551615”
(这是最大的
无符号长
值)进行尝试。目前尚不清楚这是否是
NSNumberFormatter
的错误或功能。“Tommy”的答案在这个场景中是正确的。然后我们要把这个给Tommy。是的,他确认这对“18446744073709551615”不起作用@汤米的答案正确