如何从基数 5 转换为基数 10

本文关键字:转换 | 更新日期: 2023-09-27 18:36:31

如何使用

代码将数字 1234 转换为其基数 10, 194?

string toBase10 = Convert.ToString(1234, 10);
Console.WriteLine(toBase10);

如何从基数 5 转换为基数 10

简单的方法,使用 Linq:

static int ConvertFromBase5(string number)
{
    return number.Select(digit => (int)digit - 48).Aggregate(0, (x, y) => x * 5 + y);
}

用:

Console.Write(ConvertFromBase5("1234"));

这个怎么样?

public static long FromBase(long value, int @base)
{
    string number = value.ToString();
    long n = 1;
    long r = 0;
    for (int i = number.Length - 1; i >= 0; --i)
    {
        r += n*(number[i] - '0');
        n *= @base;
    }
    return r;
}

我让它long处理更大的值。如果你愿意,你可以把它int

你可以像这样使用它:

Console.WriteLine(FromBase(1234, 5)); // Prints "194"

或者,如果您想要一个字符串,只需在其上使用ToString()即可。

var asString = FromBase(1234, 5).ToString();

它不会处理 10 以上的基数 - 但无论如何您都不能在intlong中保存基数超过 10 的数字 - 事实上,对于 10 以外的任何基数,这样做都很奇怪。通常,您会使用string以避免意外使用这些数字,就好像它们是 10 进制一样。

另一个 LINQ 解决方案:

static int ConvertFromBase(int num, int @base)
{
    return num.ToString().Reverse()
              .Select((c, index) => (int)Char.GetNumericValue(c) * (int)Math.Pow(@base, index))
              .Sum();
}
Console.WriteLine(ConvertFromBase(1234, 5));  // 194