36进制编码转换成10进制怎么做,什么思路,要完善可以粘贴的利用的。

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                CustomBaseNumber cbn = new CustomBaseNumber("0123456789abcdefghjklmnpqrstuvwxyz");
                cbn.CustomBase = "1";
                for (int i = 0; i < 100; i++)
                {
                    Console.WriteLine(cbn.CustomBase.PadLeft(6, '0'));
                    cbn.DecBase++;
                }
            }
        }
     
        class CustomBaseNumber
        {
            private string _chars;
            public CustomBaseNumber(string chars)
            {
                _chars = chars;
            }
            public string CustomBase
            {
                get 
                {
                    string value = "";
                    int decvalue = DecBase;
                    int n = 0;
                    if (decvalue == 0) return new string(new char[] {_chars[0] });
                    while (decvalue > 0)
                    {
                        n = decvalue % _chars.Length;
                        value = _chars[n] + value;
                        decvalue = decvalue / _chars.Length;
                    }
                    return value;
                }
                set
                {
                    int n = 0;
                    Func<char, int> getnum = (x) => { for (int i = 0; i < _chars.Length; i++) if (x == _chars[i]) return i; return 0; };
                    for (int i = 0; i < value.Length; i++)
                    {
                        n += Convert.ToInt32(Math.Pow((double)_chars.Length, (double)(value.Length - i - 1)) * getnum(value[i]));
                    }
                    DecBase = n;
                }
            }
            public int DecBase
            {
                get;
                set;
            }
        }
    }