简体   繁体   English

无符号长距离值

[英]Unsigned Long Long Range values

I'm making a binary converter for iPhone, and for convert a number from base X to other base I use this method: 我正在为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:@""];
}

This method works but when the number becomes bigger and bigger I have problem with the range of unsigned long long type and the conversion becomes unreliable. 这种方法有效,但是当数字越来越大时,我遇到了无符号长整型的范围问题,并且转换变得不可靠。 How Do I solve this problem? 我该如何解决这个问题?

Well for me it seems like , you assign Unsigned long long in to signed long long 对我来说,好像,您将Unsigned long long in分配给了signed long long

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

change this line with

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

I think it should be enough. 我认为应该足够了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM