N進制轉10進制 10進制轉N進制(目前最多62進制)

摘要:N進制轉10進制 10進制轉N進制(目前最多62進制)

        /// <summary>
        /// n進制轉10
        /// </summary>
        /// <param name="strNum">欲判斷值</param>
        /// <param name="intBase">原始進制</param>
        /// <returns></returns>
        public long NBase2TenBase(string strNum, int intBase)
        {
            string strDigi = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
            if (strNum.Length == 1)
                return strDigi.IndexOf(strNum);
            else
                return NBase2TenBase(strNum.Substring(0, strNum.Length - 1), intBase) * intBase + strDigi.IndexOf(strNum.Substring(strNum.Length - 1));
        }

        /// <summary>
        /// 10轉n進制
        /// </summary>
        /// <param name="lngNum">欲判斷值</param>
        /// <param name="intBase">轉換進制</param>
        /// <returns></returns>
        public string TenBase2NBase(long lngNum, int intBase)
        {
            string strDigi = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

            if (lngNum < intBase)
                return strDigi.Substring(Convert.ToInt32(lngNum), 1);
            else
                return TenBase2NBase(lngNum / intBase, intBase) + strDigi.Substring(Convert.ToInt32(lngNum % intBase), 1);
        }