2014-02-20 95 views
0

我正在做一个二进制转换器为iPhone,并转换我从基地X到其它基数的数字使用此方法:为unsigned long long值范围

+(NSString*)FromXToOtherBase:(unsigned long long)base number:(unsigned long long)number 
{ 

    unsigned long long temp_risu=number; 
    //int i=0; 
    //base is the destination base 
    NSMutableArray*rest=[[NSMutableArray alloc] init]; 
    while(temp_risu!=0) 
    { 
     NSNumber*rest_=[NSNumber numberWithLongLong:(temp_risu%base)]; 
     [rest addObject:rest_]; 
     temp_risu=temp_risu/base; 
     rest_=Nil; 

    } 

    NSMutableArray*rest_reverse=[[NSMutableArray alloc] init]; 

    for(int i=[rest count]-1;(i>-1);i--) 
    { 
    [rest_reverse addObject:[rest objectAtIndex:i]]; 
    } 

    return [rest_reverse componentsJoinedByString:@""]; 
} 

这种方法的作品,但是当数变大和更大的我有问题的无符号long long类型的范围和转换​​变得不可靠。 我该如何解决这个问题?

+0

这很奇怪......如果你说转换变得不可靠,那么你的代码不健壮。你的代码必须是可靠的,如果有一个条件不能处理,它应该会产生一个错误。 – Merlevede

+0

“不可靠”意味着当我转换大数字(例如1111111111)时,转换不正确,但如果我删除一个数字(111111111),则转换是正确的。因为这个原因,我认为这是一个表示问题 – Alessio

+0

你转换你的大号码到哪个基地? – Merlevede

回答

0

很适合我,好像,你要signed long long

NSNumber*rest_=[NSNumber numberWithLongLong:(temp_risu%base)]; 

改变分配Unsigned long long这符合

NSNumber*rest_=[NSNumber numberWithUnsignedLongLong:(temp_risu%base)]; 

我认为它应该是足够了。

相关问题