无符号长Long Range值

时间:2014-02-20 21:54:13

标签: ios objective-c long-integer

我正在为iPhone制作二进制转换器,并且为了将数字从基数X转换为其他基数,我使用此方法:

+(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类型的范围有问题,转换变得不可靠。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

好像我似乎是,您将Unsigned long long分配到signed long long

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

更改此行
    NSNumber*rest_=[NSNumber numberWithUnsignedLongLong:(temp_risu%base)];

我认为这应该足够了。

相关问题