用C#简单实现的36进制转换代码

您所在的位置:网站首页 36进制转换 用C#简单实现的36进制转换代码

用C#简单实现的36进制转换代码

2023-05-07 07:41| 来源: 网络整理| 查看: 265

private const string initValue = "A0000001"; private static string cs = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; public static string AddOne(string str) { if (str == string.Empty) { return initValue; } Int64 num = StringToNumber(str); return NumberToString(++num); } public static Int64 StringToNumber(string str) { int leg = str.Length; double num = 0; if (leg != 0) { for (int i = 0; i < leg; i++) { if (str[i] != '0') { num += cs.IndexOf(str[i]) * Math.Pow(36, leg - 1 - i); } } } return Convert.ToInt64(num); } public static string NumberToString(Int64 num) { string str = string.Empty; while (num >= 36) { str = cs[(int)(num % 36)] + str; num = num / 36; } return cs[(int)num] + str; }

 2019-8-30改进的版本

class Program { static void Main(string[] args) { string curr = "ZZZZZZ"; Console.WriteLine("原始值:" + curr); Int64 num = Scale.ToInt64(curr); Console.WriteLine("转成Int64:" + num); Console.WriteLine("根据Int64转成进制:" + Scale.ToCurr(num)); Console.ReadLine(); } } public static class Scale { /// /// 进制符号字符串 /// private static string scString = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ"; /// /// 字符集,可以根据编号索引拿到字符 /// private static char[] scArray = scString.ToCharArray(); /// /// 字符字典,可以根据字符拿到编号索引 /// private static Dictionary scDic = ToCharDic(); /// /// 根据字符串反馈进制数 /// public static int Len { get { return scString.Length; } } /// /// 将字符串处理成字符字典 /// private static Dictionary ToCharDic() { Dictionary dic = new Dictionary(); for (int i = 0; i < scArray.Length; i++) { dic.Add(scArray[i], i); } return dic; } /// /// 根据传入的字符符号定义进制,字符符号不能重复,模拟十进制字符串为:0123456789 /// public static void SetScale(string scaleString) { scString = scaleString; scArray = scString.ToCharArray(); scDic = ToCharDic(); } /// /// 将Int64转成当前进制字符串 /// public static string ToCurr(long num) { string curr = ""; while (num >= Len) { curr = scArray[num % Len] + curr; num = num / Len; } curr = scArray[num] + curr; return curr; } /// /// 将当前进制字符串转成Int64 /// public static long ToInt64(string curr) { double num = 0; for (int i = 0; i < curr.Length; i++) { num += scDic[curr[i]] * Math.Pow(Len, curr.Length - 1 - i); } return Convert.ToInt64(num); } }

  



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3