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

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 {
        /// <summary>
        /// 进制符号字符串
        /// </summary>
        private static string scString = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ";
        /// <summary>
        /// 字符集,可以根据编号索引拿到字符
        /// </summary>
        private static char[] scArray = scString.ToCharArray();
        /// <summary>
        /// 字符字典,可以根据字符拿到编号索引
        /// </summary>
        private static Dictionary<char, int> scDic = ToCharDic();
        /// <summary>
        /// 根据字符串反馈进制数
        /// </summary>
        public static int Len { get { return scString.Length; } }

        /// <summary>
        /// 将字符串处理成字符字典
        /// </summary> 
        private static Dictionary<char, int> ToCharDic() {
            Dictionary<char, int> dic = new Dictionary<char, int>();
            for (int i = 0; i < scArray.Length; i++) {
                dic.Add(scArray[i], i);
            }
            return dic;
        }
        /// <summary>
        /// 根据传入的字符符号定义进制,字符符号不能重复,模拟十进制字符串为:0123456789
        /// </summary> 
        public static void SetScale(string scaleString) {
            scString = scaleString;
            scArray = scString.ToCharArray();
            scDic = ToCharDic();
        }
        /// <summary>
        /// 将Int64转成当前进制字符串
        /// </summary> 
        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;
        }
        /// <summary>
        /// 将当前进制字符串转成Int64
        /// </summary> 
        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);
        }
    }

  

原文地址:https://www.cnblogs.com/luludongxu/p/4366546.html