zoukankan      html  css  js  c++  java
  • 用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);
            }
        }
    

      

  • 相关阅读:
    ubuntu16.04本地软件源搭建
    2080TI显卡ubuntu16.04机器学习安装和克隆
    PLSQL导入excel数据方法
    只有英伟达显卡输出口的电脑安装ubuntu系统记录
    百度人脸识别学习
    http application/x-www-form-urlencoded 模式响应学习
    JS中继承的几种实现方式
    浅拷贝和深拷贝
    防抖和节流
    HTML知识点总结
  • 原文地址:https://www.cnblogs.com/luludongxu/p/4366546.html
Copyright © 2011-2022 走看看