并不是说工作量很大,但是我知道将非十进制转换为另一个非十进制的唯一方法是先将数字转换为十进制,然后再采取第二步将其转换为新的基数。例如,要将 456(以 7 为基数)转换为 567(以 8 为基数),我将计算 456 的十进制值,然后将该值转换为以 8 为基数...
有没有更好的方法直接从7点到8点?或任何其他基地的基地?
这是我所拥有的:
//source_lang and target_lang are just the numeric symbols, they would be "0123456789" if they were decimal, and "0123456789abcdef" if hex.
private string translate(string num, string source_lang, string target_lang)
{
int b10 = 0;
string rv = "";
for (int i=num.Length-1; i>=0; i--){
b10 += source_lang.IndexOf( num[i] ) * ((int)Math.Pow(source_lang.Length, num.Length -1 - i));
}
while (b10 > 0) {
rv = target_lang[b10 % target_lang.Length] + rv;
b10 /= target_lang.Length;
}
return rv;
}