进制转换
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace 进制转换 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string s = shizhuanqita(int.Parse(textBox_10.Text),2); textBox_2.Text = s; string s8 = shizhuanqita(int.Parse(textBox_10.Text), 8); textBox_8.Text = s8; string s16 = shizhuanqita(int.Parse(textBox_10.Text), 16); textBox_16.Text = s16; } public string shizhuanqita(int a,int jinzhi)//输入参数为十进制数,和需要转换为几进制 { string jieguo="";//定义变量,return while (true) { string s=""; if (jinzhi==2||jinzhi==8) { s = (a % jinzhi).ToString();//十进制数%进制取余 jieguo = s + jieguo; a = a / jinzhi;//十进制数/进制到0结束 跳出循环 if (a==0) { break; } } else//转换十六进制 { int b = a % jinzhi;//判断取余数的大小 if (b==10) { s = "A"; } else if (b==11) { s = "B"; } else if (b == 12) { s = "C"; } else if (b == 13) { s = "D"; } else if (b == 14) { s = "E"; } else if (b == 15) { s = "F"; } else { s = b.ToString(); } jieguo = s + jieguo; a = a / jinzhi; if (a==0) { break; } } } return jieguo; } /// <summary> /// 二进制转换其他进制。先把二进制转换成了十进制,然后拿十进制的数去转换八进制和十六进制 /// </summary> /// <param name="a">二进制字符串</param> /// <param name="jinzhi">需要转换为几进制</param> /// <returns></returns> public string erjinzhizhuanqita(string a, int jinzhi)//二进制转换其他进制 { int i = 1; string jieguo = ""; double shijinzhi = 0; string s = ""; while (true) { string b = a.Substring(a.Length - i, 1);//截取字符串 shijinzhi = (double.Parse(b) * Math.Pow(2, i - 1)) + shijinzhi;//转换成十进制 jieguo = shijinzhi.ToString(); i++; if (i > a.Length)//i大于a的长度时跳出循环 { break; } } if (jinzhi == 8) { string bajinzhi=""; while (true) { s = (shijinzhi % jinzhi).ToString(); bajinzhi = s + bajinzhi; jieguo = bajinzhi; shijinzhi = Math.Floor(shijinzhi / jinzhi);//除完取整,不取整的话double类型的数值永远除不到0 if (shijinzhi == 0) { break; } } } else if (jinzhi == 16) { string shiliujinzhi = ""; while (true) { int b = (int)shijinzhi % jinzhi; if (b == 10) { s = "A"; } else if (b == 11) { s = "B"; } else if (b == 12) { s = "C"; } else if (b == 13) { s = "D"; } else if (b == 14) { s = "E"; } else if (b == 15) { s = "F"; } else { s = b.ToString(); } shiliujinzhi = s + shiliujinzhi; jieguo = shiliujinzhi; shijinzhi = Math.Floor(shijinzhi / jinzhi); if (shijinzhi == 0) { break; } } } return jieguo; } private void button2_Click(object sender, EventArgs e) { string s10 = erjinzhizhuanqita(textBox_2.Text,10); textBox_10.Text = s10; string s8 = erjinzhizhuanqita(textBox_2.Text, 8); textBox_8.Text = s8; string s16 = erjinzhizhuanqita(textBox_2.Text, 16); textBox_16.Text = s16; } } }