如何在C#中实现进制间转换

2025-12-21 12:56:08

1、1.首先打开VS软件,创建如下图所示的窗体及控件。下图中所示窗体较为简陋,请主要参考实现方法。

如何在C#中实现进制间转换

2、2.点击窗体中转换按钮时触发事件。此处最好加上try{}catch(){}方法,拦截错误信息,防止程序崩溃。如下图所示

如何在C#中实现进制间转换

3、3.十进制转换成三十二进制方法如下图。其中传入参数为待转换的十进制数值。调用此方法需要检验传入数值是否为正整数。

如何在C#中实现进制间转换

4、4.十进制转换成三十六进制方法如下图。其中传入参数为待转换的十进制数值。调用此方法需要检验传入数值是否为正整数。

如何在C#中实现进制间转换

5、4.三十二进制转换成十进制方法如下图。其中传入参数为待转换的三十二进制数值。

如何在C#中实现进制间转换

6、6.自己整理出了一种通用型转换进制的方法。需要传入待转换的数值及需要转换成的进制。如下图所示。

如何在C#中实现进制间转换

7、7.下图为所有进制的转换方法,其中包含每种进制数所对应的代码可自行修改。

如何在C#中实现进制间转换

8、以下为本次演示实例的源代码,供大家参考。

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace 进制转换

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)

        {

        }

        private void buttonX1_Click(object sender, EventArgs e)

        {

            this.txtNewValue.Text = string.Empty;

            this.txtNewValue.Text = IntToAry(int.Parse(this.txtValue.Text.Trim()), int.Parse(this.comboBoxEx1.Text));

           

        }

        /// <summary>

        /// 万能进制转换

        /// </summary>

        /// <param name="xx">待转换数据</param>

        /// <param name="xx">需要装换成的进制</param>

        /// <returns></returns>

        public static string IntToAry(long xx, int Ary)

        {

            string a = "";

            while (xx >= 1)

            {

                int index = Convert.ToInt16(xx - (xx / Ary) * Ary);

                a = Base64Code[index] + a;

                xx = xx / Ary;

            }

            return a;

        }

        /// <summary>

        ///十进制转换成32进制

        /// </summary>

        /// <param name="xx">待转换的值</param>

        /// <returns></returns>

        public static string IntToi32(long xx)

        {

            string a = "";

            while (xx >= 1)

            {

                int index = Convert.ToInt16(xx - (xx / 32) * 32);

                a = Base64Code[index] + a;

                xx = xx / 32;

            }

            return a;

        }

        /// <summary>

        /// 十进制转换成36进制

        /// </summary>

        /// <param name="xx">待转换的值</param>

        /// <returns></returns>

        public static string IntToi36(long xx)

        {

            string a = "";

            while (xx >= 1)

            {

                int index = Convert.ToInt16(xx - (xx / 36) * 36);

                a = Base64Code[index] + a;

                xx = xx / 36;

            }

            return a;

        }

        /// <summary>

        /// 32进制转换成10进制

        /// </summary>

        /// <param name="xx">待转换的值</param>

        /// <returns></returns>

        public static long i32ToInt(string xx)

        {

            long a = 0;

            int power = xx.Length - 1;

            for (int i = 0; i <= power; i++)

            {

                a += _Base64Code[xx[power - i].ToString()] * Convert.ToInt64(Math.Pow(32, i));

            }

            return a;

        }

        /// <summary>

        /// 十进制转换成64进制

        /// </summary>

        /// <param name="xx">待转换的值</param>

        /// <returns></returns>

        public static string IntToi64(long xx)

        {

            string a = "";

            while (xx >= 1)

            {

                int index = Convert.ToInt16(xx - (xx / 64) * 64);

                a = Base64Code[index] + a;

                xx = xx / 64;

            }

            return a;

        }

        /// <summary>

        /// 64进制转换成10进制

        /// </summary>

        /// <param name="xx">待转换的值</param>

        /// <returns></returns>

        public static long i64ToInt(string xx)

        {

            long a = 0;

            int power = xx.Length - 1;

            for (int i = 0; i <= power; i++)

            {

                a += _Base64Code[xx[power - i].ToString()] * Convert.ToInt64(Math.Pow(64, i));

            }

            return a;

        }

        

        public static Dictionary<int, string> Base64Code = new Dictionary<int, string>() {

            {   0  ,"0"}, {   1  ,"1"}, {   2  ,"2"}, {   3  ,"3"}, {   4  ,"4"}, {   5  ,"5"}, {   6  ,"6"}, {   7  ,"7"}, {   8  ,"8"}, {   9  ,"9"},

            {   10  ,"a"}, {   11  ,"b"}, {   12  ,"c"}, {   13  ,"d"}, {   14  ,"e"}, {   15  ,"f"}, {   16  ,"g"}, {   17  ,"h"}, {   18  ,"i"}, {   19  ,"j"},

            {   20  ,"k"}, {   21  ,"l"}, {   22  ,"m"}, {   23  ,"n"}, {   24  ,"o"}, {   25  ,"p"}, {   26  ,"q"}, {   27  ,"r"}, {   28  ,"s"}, {   29  ,"t"},

            {   30  ,"u"}, {   31  ,"v"}, {   32  ,"w"}, {   33  ,"x"}, {   34  ,"y"}, {   35  ,"z"}, {   36  ,"A"}, {   37  ,"B"}, {   38  ,"C"}, {   39  ,"D"},

            {   40  ,"E"}, {   41  ,"F"}, {   42  ,"G"}, {   43  ,"H"}, {   44  ,"I"}, {   45  ,"J"}, {   46  ,"K"}, {   47  ,"L"}, {   48  ,"M"}, {   49  ,"N"},

            {   50  ,"O"}, {   51  ,"P"}, {   52  ,"Q"}, {   53  ,"R"}, {   54  ,"S"}, {   55  ,"T"}, {   56  ,"U"}, {   57  ,"V"}, {   58  ,"W"}, {   59  ,"X"},

            {   60  ,"Y"}, {   61  ,"Z"}, {   62  ,"-"}, {   63  ,"_"},

        };

        public static Dictionary<string, int> _Base64Code

        {

            get

            {

                return Enumerable.Range(0, Base64Code.Count()).ToDictionary(i => Base64Code[i], i => i);

            }

        }

    }

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢