将数字从基数10转换为基数7 c#

问题描述 投票:-1回答:2

使用C#中的Convert.ToString方法,我只能将数字转换为以2、8、10或16为底的数字。是否可以使用c#.net4或4.5将以10为底的数字转换/计算为以7为底的数字?

MSDN Convert.ToString Method (Int32, Int32)

c# .net int base
2个回答
4
投票

您可以检查this blog对此提供了解决方案:

public static string DecimalToArbitrarySystem(long decimalNumber, int radix)
{
    const int BitsInLong = 64;
    const string Digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    if (radix < 2 || radix > Digits.Length)
        throw new ArgumentException("The radix must be >= 2 and <= " +
            Digits.Length.ToString());

    if (decimalNumber == 0)
        return "0";

    int index = BitsInLong - 1;
    long currentNumber = Math.Abs(decimalNumber);
    char[] charArray = new char[BitsInLong];

    while (currentNumber != 0)
    {
        int remainder = (int)(currentNumber % radix);
        charArray[index--] = Digits[remainder];
        currentNumber = currentNumber / radix;
    }

    string result = new String(charArray, index + 1, BitsInLong - index - 1);
    if (decimalNumber < 0)
    {
        result = "-" + result;
    }

    return result;
}

然后像这样称呼它>

Console.WriteLine("Base 7: " + DecimalToArbitrarySystem(number,  7));

0
投票

我试图将此解决方案转换为Vb.Net,并且使用所有C#至VB.Net在线转换器的结果始终是错误的。问题在于整数除法。(您可以尝试以5为基数计算320(C#= 2240是可以的。使用到VB.Net的转换,结果始终是13340,这是错误的)。

© www.soinside.com 2019 - 2024. All rights reserved.