如何在iOS中将大数字分解为更易于管理的部分?

时间:2011-08-01 19:38:35

标签: iphone objective-c ios ipad

我想为iOS创建一个使用随机80位数的应用程序,但我几乎可以肯定当前的硬件无法处理那么大的数字。那么将数字分成小块的好方法是什么?到目前为止,我能想到的最好的方法是将它分解为4个20位的块,但是我不满意这样做的处理器容量有多大。谢谢你能给我的任何帮助。

3 个答案:

答案 0 :(得分:0)

两个整数和一个空头怎么样?这将使你获得32 + 32 + 16 = 80位。我不知道你要做什么,但我现在可能不会担心处理器容量。

答案 1 :(得分:0)

如果您想使用该数字进行计算,最好使用现有的库,例如GMP,而不是开发自己的库。如果它只是用作哈希,加密密钥或类似的东西,则应使用NSData或原始字节数组。

答案 2 :(得分:0)

创建一个malloc的80个布尔值的课程不是很有效吗? BOOL类型已经是“真/假”,并且额外的内存开销是最小的问题,相当于两个或三个硬编码字符串的内存。我将尝试下面的例子:

UN-TESTED CODE:

@interface KenoBoard : NSObject{

    BOOL * boardSelections;

}

-(BOOL)selectionForPosition:(int)number;
-(void)setSelection:(BOOL)selection forPosition:(int)number;

@end

@implementation KenoBoard

-(id)init{
    if(self = [super init]){
        boardSelections = calloc(80*sizeof(BOOL));
    }
    return self;
}

-(void)dealloc{
    free(boardSelections);
    [super dealloc];
}

-(BOOL)selectionForPosition:(int)number{
    if (number >= 80){
        ...make a NSException here
        @throw exception
    }
    return boardSelections[number];
}

-(void)setSelection:(BOOL)selection forPosition:(int)number{
    if (number >= 80){
        ...make a NSException here
        @throw exception
    }
    boardSelections[number] = selection;  
}

@end