[英]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个号码int
或long
无论如何-事实上,这是奇怪,这样做比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.