如标题所示, 将Keys改成对应的进制字符即可
另,优化点
- 增加大小写字符可能会引起不直观的字符串生成
2.0和o应当去除其中一个,否则同样会引起不直观字符生成
private static readonly string Keys = "123456789abcdefghijklmnopqrstuvwxyz";//编码,可加一些字符也可以实现72,96等任意进制转换,但是有符号数据不直观,会影响阅读。
private static readonly int Exponent = Keys.Length;//幂数
/// <summary>
/// decimal 转N进制
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static string Decimal2Str(decimal val)
{
Stack<char> rr = new Stack<char>();
do
{
decimal ys = val % Exponent;
val /= Exponent;
rr.Push(Keys[(int)ys]);
if (val < Exponent)
{
rr.Push(Keys[(int)val]);
}
} while (val >= Exponent);
var str = string.Empty;
while (rr.Count > 0)
{
str += rr.Pop();
}
return str;
}