有个10进制数如100,转成16进制,变成64,把64当成10进制使用.这个函数怎么写.100->64
180->B8,关键这个B8无法对应到10进制数.

解决方案 »

  1.   


                int i = 100;
                string hex = Convert.ToString(i, 16);
                i = Convert.ToInt32(hex);
      

  2.   


        /// <summary>
        /// 36进制内的数值转10进制
        /// </summary>
        /// <param name="radixnum"></param>
        /// <param name="radix"></param>
        /// <returns></returns>
        public int toN10(string radixnum, int radix)
        {
            string _num = "0123456789ABCDEFGHIJKLMNOPQRSTUVWSYZ";
            char[] _ary = radixnum.ToCharArray();
            int _log = 1;
            int sn = 0;
            for (int i = _ary.Length - 1; i >= 0; i--)
            {
                sn = sn + _num.IndexOf(_ary[i]) * _log;
                _log = _log * radix;
            }
            return sn;
        }
        /// <summary>
        /// 10进制转36进制
        /// </summary>
        /// <param name="n10"></param>
        /// <param name="radix"></param>
        /// <returns></returns>
        private string toN36(int n10, int radix)
        {
            string _num = "0123456789ABCDEFGHIJKLMNOPQRSTUVWSYZ";
            int sn = n10;
            string _rul = string.Empty;
            while (sn >= radix)
            {
                _rul = _num.Substring(sn % radix, 1) + _rul;
                sn = sn / radix;
            }
            return _num.Substring(sn % radix, 1) + _rul;
        }
      

  3.   

            Response.Write(toN36(180, 16));
            Response.End();        ===
            Response.Write(toN10("B4", 16));
            Response.End();