如何在C#中实现进制间转换
1、1.首先打开VS软件,创建如下图所示的窗体及控件。下图中所示窗体较为简陋,请主要参考实现方法。
2、2.点击窗体中转换按钮时触发事件。此处最好加上try{}catch(){}方法,拦截错误信息,防止程序崩溃。如下图所示
3、3.十进制转换成三十二进制方法如下图。其中传入参数为待转换的十进制数值。调用此方法需要检验传入数值是否为正整数。
4、4.十进制转换成三十六进制方法如下图。其中传入参数为待转换的十进制数值。调用此方法需要检验传入数值是否为正整数。
5、4.三十二进制转换成十进制方法如下图。其中传入参数为待转换的三十二进制数值。
6、6.自己整理出了一种通用型转换进制的方法。需要传入待转换的数值及需要转换成的进制。如下图所示。
7、7.下图为所有进制的转换方法,其中包含每种进制数所对应的代码可自行修改。
8、以下为本次演示实例的源代码,供大家参考。using System;using System.Collections.Generic;using System.Co罪焐芡拂mponentModel;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); } } }}