gpt4 book ai didi

algorithm - 将非十进制数转换为另一个非十进制数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:30:21 27 4
gpt4 key购买 nike

并不是说这需要很多工作,但我知道将一个非十进制转换为另一个非十进制的唯一方法是先将数字转换为十进制,然后采取第二步将其转换为新的基数。例如,要将 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;
}

最佳答案

您并没有真正将其转换为以 10 为基数。您正在将其转换为数字数据类型而不是字符串表示形式。如果有的话,你正在将它转换成二进制 :) 区分“整数”(本质上没有基数)和“整数的文本表示”(有基数)是值得的。

IMO,这似乎是一个明智的做法。但是,您的转换例程肯定不是特别有效。我会将您的代码分成 ParseFormat 方法,然后 Convert 方法可以是这样的:

public static string Convert(string text, int sourceBase, int targetBase)
{
int number = Parse(text, sourceBase);
return Format(number, targetBase);
}

(当然,您可以根据需要使用 string 来表示不同的基数。如果您确实需要这种灵 active ,我很想创建一个新类来表示一个“数字表示”。该类可能应该是包含 ParseFormatConvert 的类。)

关于algorithm - 将非十进制数转换为另一个非十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1360871/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com