gpt4 book ai didi

c# - 在 C# 中将 base-27(或 base-X)转换为 base-10?

转载 作者:太空狗 更新时间:2023-10-29 23:25:27 33 4
gpt4 key购买 nike

是否有现成的函数可以在 C# 中进行基本转换?我希望将以 26 为基数和以 27 为基数的数字转换为以 10 为基数。我可以在纸上完成,但我不是一个非常有经验的程序员,如果可能的话,我宁愿不要从头开始。谢谢!

最佳答案

有一个现成的函数可以将数字从 2 进制、8 进制或 16 进制转换为 10 进制 ( Convert.ToInt32 )。如果您想将 26 进制或 27 进制的数字转换为 10 进制,您必须自己动手。

现在,我从未听说过 26 进制数,所以我假设“数字”是 A 到 Z(A 的值为 0,Z 的十进制值为 25)。要从 26 进制转换为 10 进制,您应该执行以下操作:

string charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int GetDigitValue(char digit)
{
return charset.IndexOf(digit);
}
int ConvertFromBase26(string number)
{
int result = 0;
foreach(char digit in number)
result = result * charset.Length + GetDigitValue(digit);

return result;
}

要从基数 27 转换,只需添加代表 26 的任何字符。

注意:没有纠错(你可以转换字符串“$#$@#$@”,这会得到一个很好的负数),并且 GetDigitValue 效率相当低,如果你计划的话,应该用查找表代替进行大量这些转换。

编辑:LINQ 版本,仅供娱乐。

同样,假设字符串仅由合法数字组成,则没有有效的查找和纠错。

string charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int ConvertFromBase(string charset, string number)
{
return number.Select(c=>charset.IndexOf(c)).Aggregate(0, (x, y) => x*charset.Length +y);
}

不过,我认为第一个版本更具可读性。

关于c# - 在 C# 中将 base-27(或 base-X)转换为 base-10?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9559122/

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