[英]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.