簡體   English   中英

如何從以5為基數轉換為以10為基數?

[英]How can I convert from base 5 to base 10?

如何使用代碼將數字1234轉換為以10為底的194?

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

簡單的方法,使用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 -但你不能在守住基地10個號碼intlong無論如何-事實上,這是奇怪,這樣做比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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM