我正在为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类型的范围有问题,转换变得不可靠。 我该如何解决这个问题?
答案 0 :(得分:0)
好像我似乎是,您将Unsigned long long
分配到signed long long
NSNumber*rest_=[NSNumber numberWithLongLong:(temp_risu%base)];
用
更改此行 NSNumber*rest_=[NSNumber numberWithUnsignedLongLong:(temp_risu%base)];
我认为这应该足够了。