【曾经】进制转换器C#

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Threading.Tasks;
  9 using System.Windows.Forms;
 10
 11 namespace numconversion
 12 {
 13     public partial class Form1 : Form
 14     {
 15         const int n=4,m=4;
 16         string str=null;
 17         string hex, dec, oct, bin;
 18         Button[,] buttons = new Button[n, n];
 19         RadioButton[] rbs = new RadioButton[m];
 20         TextBox[] TB = new TextBox[m+1];
 21         public Form1()
 22         {
 23             InitializeComponent();
 24         }
 25
 26         private void Form1_Load(object sender, EventArgs e)
 27         {
 28             MaximizeBox = false;
 29             LoadTB();
 30             GenerateButton();
 31             GenerateRB();
 32             rbs[0].Checked = true;
 33
 34         }
 35         //数组引用文本框便于利用循环
 36         void LoadTB()
 37         {
 38             TB[1] = textBox1;
 39             TB[2] = textBox2;
 40             TB[3] = textBox3;
 41             TB[4] = textBox4;
 42
 43         }
 44         //初始化radiobutton
 45         void GenerateRB()
 46         {
 47             const int h=27;
 48             int right = label1.Left,top=label1.Top-6;
 49             for(int i=0;i<m;i++)
 50             {
 51                 RadioButton rb = new RadioButton();
 52
 53                 rb.Text = null;
 54                 rb.Top = top+i*h;
 55                 rb.Left = right-15;
 56                 rbs[i] = rb;
 57                 this.Controls.Add(rb);
 58                 rb.Click += new EventHandler(rb_Click);
 59
 60             }
 61         }
 62
 63         void rb_Click(object sender, EventArgs e)
 64         {
 65             DisenableAllBtns();
 66             switch(GetRbNum())
 67             {
 68                 case 1: EnableBtns(16); str = textBox1.Text; break;
 69                 case 2: EnableBtns(10); str = textBox2.Text; break;
 70                 case 3: EnableBtns(8); str = textBox3.Text; break;
 71                 case 4: EnableBtns(2); str = textBox4.Text; break;
 72
 73
 74             }
 75
 76
 77         }
 78
 79         void DisenableAllBtns()
 80         {
 81             for(int i=0;i<n;i++)
 82             {
 83                 for(int j=0;j<n;j++)
 84                 {
 85                     buttons[i, j].Enabled = false;
 86                 }
 87             }
 88         }
 89         void EnableBtns(int num)
 90         {
 91             for (int i = 0; i < n; i++)
 92             {
 93                 for (int j = 0; j < n; j++)
 94                 {
 95                     if (Convert.ToInt32(buttons[i, j].Tag)<=num)buttons[i, j].Enabled = true;
 96                 }
 97             }
 98         }
 99         //获取选中的radiobutton的num
100         int GetRbNum()
101         {
102             for(int i=0;i<m;i++)
103             {
104                 if (rbs[i].Checked == true) return i+1;
105
106             }
107             return 0;
108         }
109         //初始化所有数值按钮
110         void GenerateButton()
111         {
112             int btn_wid=45,d=50;
113             int left0=textBox1.Left ,top0=btn_backspace.Top+btn_backspace.Height+10;
114             for(int i=0;i<n;i++)
115             {
116                 for (int j=0;j<n;j++)
117                 {
118                     Button btn=new Button();
119                     btn.Text=SwitchCharByNum(i*n+j).ToString();
120                     btn.Top=top0+i*d;
121                     btn.Left=left0+j*d;
122                     btn.Width=btn_wid;
123                     btn.Height=btn_wid;
124                     btn.Tag=(i*n+j+1).ToString();
125                     btn.Visible = true;
126                     btn.Click+=new EventHandler(btn_Click);
127                     buttons[i, j] = btn;
128                     this.Controls.Add(btn);
129
130
131                 }
132             }
133         }
134         //通过数值来获取字符给按钮文本
135         char SwitchCharByNum(int num)
136         {
137            char a=‘ ‘;
138            if(num<=9&&num>=0)a=(char)(‘0‘+num);
139            else if(num>=10&&num<=16)a=(char)(‘A‘-10+num);
140
141            return a;
142         }
143         //从字符得到数值
144         int SwitchNumByChar(char a)
145         {
146             int n=-1;
147             if(a<=‘9‘&&a>=‘0‘)n=a-‘0‘;
148             if(a<=‘F‘&&a>=‘A‘)n=a-‘A‘+10;
149             return n;
150         }
151
152         void btn_Click(object sender,EventArgs e)
153         {
154             Button bta=sender as Button;
155             int num = GetRbNum();
156             str = str + bta.Text;
157             TB[num].Text = str;
158             conver(TB[num].Text, SwitchSysByNum(num));
159         }
160
161
162
163         private void btn_empty_Click(object sender, EventArgs e)
164         {
165             for (int i = 1; i <= m; i++) TB[i].Text = null;
166             hex = null;
167             dec = null;
168             oct = null;
169             bin = null;
170             str = null;
171         }
172
173         private void btn_backspace_Click(object sender, EventArgs e)
174         {
175             int num = GetRbNum();
176             if (TB[num].Text != "")
177             {
178                 TB[num].Text = TB[num].Text.Remove(TB[num].Text.Length - 1, 1);
179                 str = TB[num].Text;
180                 conver(TB[num].Text, SwitchSysByNum(num));
181             }
182
183         }
184         //s字符串 x字符串进制
185         void conver(string s,int x)
186         {
187             int decn=ToDec(s, x);
188             dec=decn.ToString();
189             hex = DecTo(decn,16);
190             oct= DecTo(decn, 8);
191             bin = DecTo(decn, 2);
192             textBox1.Text = hex;
193             textBox2.Text = dec;
194             textBox3.Text = oct;
195             textBox4.Text = bin;
196         }
197
198         //由c进制转为10进制
199         int ToDec(string b,int c)
200         {
201             int num=0;
202             for (int i = 0; i < b.Length; i++)
203             {
204                 num = num + SwitchNumByChar(b[i]) *(int) Math.Pow(c, b.Length - i-1);
205             }
206
207             return num;
208         }
209         //由10进制转为c进制
210         string DecTo(int b,int c)
211         {
212             string a = null;
213             int d=-1;
214             do
215             {
216
217                 d=b%c;
218                 b = b / c;
219                 a=SwitchCharByNum(d).ToString()+a;
220             }while(b>=1);
221              return a;
222         }
223         //由radiobutton获取当前进制
224         int SwitchSysByNum(int x)
225         {
226             switch(x)
227             {
228                 case 1: return 16;
229                 case 2: return 10;
230                 case 3: return 8;
231                 case 4: return 2;
232             }
233             return 1;
234         }
235
236         private void pictureBox1_Click(object sender, EventArgs e)
237         {
238             Form2 form = new Form2();
239             form.ShowDialog();
240         }
241
242
243
244     }
245 }

百度云下载

时间: 2024-09-29 09:13:59

【曾经】进制转换器C#的相关文章

我学C#的第一天之进制转换器

两天的时间实现了一个功能——进制转换器 今天最大的收获就是如何在文本框中限制输入 如下: private void txtDecimal_KeyPress(object sender, KeyPressEventArgs e) { if ("1234567890".IndexOf(e.KeyChar) == -1 && e.KeyChar != 8) e.Handled = true; 这比在textBox文本中用Message.Show方便且没有bug.

进制转换器

1 /* 2 进制转换器 3 P进制数x转为Q进制数z 4 过程模拟,先转十进制再转目标进制 5 */ 6 #include<cstdio> 7 #include<algorithm> 8 #include<stack> 9 using namespace std; 10 int main(){ 11 int p,q; 12 int x,y=0,z; 13 int a=1; 14 stack<int> sta; 15 scanf("%d%d%d&q

数据结构12: 实践项目之进制转换器

进制转换器项目要求:用户提供需要转换的数据和该数据的进制,以及要转换的进制,进制转换器提供给用户最终的正确转换的结果. 转换器实例 例如,用户提供了一个十进制数:10,要求将此数据以二进制形式转换,则通过进制转换器转换的最终结果应该:1010. 提示:此进制转换器可以在 2-36 进制之间对数据进行任意转换.各进制中对应的数字如下表: 设计思路 当用户给定 2 - 36 进制中的任意一进制数时,最简单的方法是使用顺序存储结构进行存储,即使用字符串数组存储. 转化时,最直接的思路就是先将该数转化为

2~16进制间任意进制转换器

一.程序运行截图(仅列举部分) 正数: (1)10->8 (连续五次不输入程序会自动结束哦) (2)10->2 (3)16->10 (4)8->16  负数: (1)10->2 (2)10->2 (3)8->16  二.扩展功能 1.可以识别正负数并输出,当输出为二进制时会自动将其补为有符号位的八位或十六位. 2.能在2至16所有进制间任意转换: 3输入错误时会报错并让你重新输入: 4.加了一个没卵用的随机数来使最后一句话随机输出. 三.介绍函数及其使用的全局变量

使用qt写的进制转换器

没有使用什么数据结构,直接使用qt自带的进制转换函数, 实时出结果,代码在后面的链接中,由于初学qt,好多不会,代码构造就有点乱 截图如下 代码 http://pan.baidu.com/s/1Ppwxo

我写的第三个程序(进制转换器)

填写你需要转换的数值,然后填写数值的进制,就可以转换成十进制的数值: a=input('请输入数值:') b=int(input('请输入进制:')) c=int(a,base=b) print(c) 原文地址:https://www.cnblogs.com/shengbei/p/8848353.html

进制转换器beta 1

一.运行截图 二.拓展功能 检测进制数是否错误,若输错后无需返回菜单重新进行选择进制转换选项,可直接重新输入所需要转换的进制数 三.函数&功能 1.menu函数 void menu() //菜单 { printf(" \\ 我是菜单 / \n"); printf(" (?ì _ í?) \n"); printf(" ——————十进制转换二进制 [1]—————— \n"); printf(" \\ 十进制转换八进制 [2] /

函数+进制转换器

一.运行截图 注释:正常操作由二进制数转换为八进制数. 注释:如果输入输出前后进制类型相同,输出输入的值. 注释:如果输入进制类型不是规则给定的,输出错误. 注释:如果输入进制类型不是规则给定的,输出错误. 注释:如果输入的数与该数进制类型不符,输出错误. 二.函数介绍 ①二进制→八进制 void twoTOeight(int x){ if(x%10>1){ printf("ERROR!"); return; } int result1=0,result2=0,i=0,remai

10进制转换成2、8、16进制の转换器

目前只能实现简单的功能 1 #include <stdio.h> 2 #include <limits.h> 3 #include <math.h> 4 #include <string.h> 5 #include <stdlib.h> 6 #include <ctype.h> 7 int size; 8 char string[CHAR_BIT * sizeof(int) + 1]; 9 void change_to_16(void