在c#中将base-27(或base-X)转换为base-10?
是否有现成的function可以在c#中进行基本转换? 我希望从基数为26和基数为27的数字转换为基数10.我可以在纸上做,但我不是一个非常有经验的程序员,如果可能的话,宁可不要从头做。 谢谢!
有一个现成的函数可以将数字从基数2,8或16转换为基数10( Convert.ToInt32
)。 如果你想将数字从26或27基数转换为10,你必须自己做。
现在,我从未听说过基数为26的数字,所以我只是假设’数字’是A到Z(A的值为0,Z的十进制值为25)。 要从base 26转换为base 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); }
我认为第一个版本更具可读性。
建立你的答案。 您不需要charset查找列表,因为您可以只使用char ASCII值。
int ConvertFromBase26(string number) { return number.Select(digit => (int)digit - 64).Aggregate(0, (x, y) => x * 26 + y); }
我使用它在使用Excel编程时将列字符串地址转换为int。
上述就是C#学习教程:在c#中将base-27(或base-X)转换为base-10?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1018003.html