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”不起作用@汤米的答案正确