将十进制转换为不同的基数

时间:2014-03-30 05:51:50

标签: ios objective-c arbitrary-precision

我正在编写一个程序来计算数字系统的转换。我的目标是让程序在短时间内(<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/

0 个答案:

没有答案