在iOS上解析64位无符号整数

4

我有一个非常大的无符号整数在NSString中。它可能大于2^64。 是否存在解析这个数字的现有函数/类?

据我所知,这是一个无符号长长整型值,但是,很难知道我应该使用什么样的方法来解析它。


你所说的解析是什么意思?是将NSString类型的数字转换为unsigned long long类型吗? - nacho4d
如需请求从NSString读取无符号值的支持,请访问http://bugreport.apple.com并针对组件“Foundation | X”提交radar:// 2264733的副本。 - Quinn Taylor
3个回答

9
也许这不是最漂亮的答案,但您应该能够做到类似于这样的操作:
#include <stdlib.h>
...
unsigned long long parsedValue = strtoull([yourString UTF8String], NULL, 0);

也许有其他更加简单易懂的方法来实现它。


哦,这很好。我喜欢C函数。谢谢你的回答! - eonil
1
只需 [yourString longLongValue]; - Roman Truba
@roman truba:这对于最大到2^63的有符号数值是有效的;而问题提问者想要最大到2^64的无符号数值。 - Stephen Canon

1

这是一个旧的问题,但这里有一个稍微更加Cocoa风格的变体,基于Stephen Canon的(正确的)答案:

#import <stdlib.h>

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

现在所有的字符串都将响应unsignedLongLongValue选择器。

0

这可能有效,但只能到达 2^63 - 1

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

NSScanner似乎没有scanUnsignedLongLong方法。


谢谢回答,但这正是我所解释的问题。问题在于该值最高可达2^64。 - eonil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接