2014-02-20 97 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)]; 

我認爲它應該是足夠了。

相關問題