我正在编写一个程序来计算数字系统的转换。我的目标是让程序在短时间内(<0.1s)计算非常大的数字并且我制作了一个NSString类别让我计算非常大的数字(+ - * /%),这是一个将任何基数转换为十进制,我认为它足够快。
问题在于:将十进制转换为不同的基数。它永远不够快,我的算法甚至需要我> 10秒才能从十进制转换为二进制或内存错误。
- (NSString *)decimalToBase:(int)baseOfNewNumber
{
NSString *quotient, *remainder, *result;
result = @"";
quotient = number;
if (number != 0 && baseOfNewNumber != 10) {
for (int count = 0; [quotient compare:[NSString stringWithFormat:@"%i", baseOfNewNumber] options:NSNumericSearch] == (NSOrderedDescending|NSOrderedSame); count++) {
remainder = [quotient stringByModuloByString:[NSString stringWithFormat:@"%i", baseOfNewNumber]];
quotient = [quotient stringByDividedByString:[NSString stringWithFormat:@"%i", baseOfNewNumber]];
result = [remainder stringByAppendingString:result];
}
result = [[quotient stringByModuloByString:[NSString stringWithFormat:@"%i", baseOfNewNumber]] stringByAppendingString:result];
return result;
} else {
return number;
}
}
最后,这个网站非常快速地转换非常大的数字,我看到它的源代码,它可能只是使用像我这样的常用方法! http://www.convertworld.com/en/numerals/