十进制数转换为二进制,八进制,十六进制数的算法

来源:互联网 发布:unity3d音乐播放器apk 编辑:程序博客网 时间:2024/04/25 16:47

看代码:

[c-sharp:nogutter] view plaincopy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Text;  
  7. using System.Windows.Forms;  
  8.   
  9. namespace ExDtoB  
  10. {  
  11.     public partial class Form1 : Form  
  12.     {  
  13.         public Form1()  
  14.         {  
  15.             InitializeComponent();  
  16.         }  
  17.   
  18.         //十进制转二制  
  19.         public string DtoB(int d)  
  20.         {  
  21.             string b = "";  
  22.             //判断该数如果小于2,则直接输出  
  23.             if (d < 2)  
  24.             {  
  25.                 b = d.ToString();  
  26.             }  
  27.             else  
  28.             {  
  29.                 int c;  
  30.                 int s = 0;  
  31.                 int n = d;  
  32.                 while (n >= 2)  
  33.                 {  
  34.                     s++;  
  35.                     n = n / 2;  
  36.                 }  
  37.                 int[] m = new int[s];  
  38.                 int i = 0;  
  39.                 do  
  40.                 {  
  41.                     c = d / 2;  
  42.                     m[i++] = d % 2;  
  43.                     d = c;  
  44.                 } while (c >= 2);  
  45.                 b = d.ToString();  
  46.                 for (int j = m.Length - 1; j >=0; j--)  
  47.                 {  
  48.                     b += m[j].ToString ();  
  49.                 }  
  50.             }  
  51.             return b;  
  52.         }  
  53.   
  54.   
  55.         //十进制转八进制  
  56.         public string DtoO(int d)  
  57.         {  
  58.             string o = "";  
  59.             if (d < 8)  
  60.             {  
  61.                 o = d.ToString();  
  62.             }  
  63.             else  
  64.             {  
  65.                 int c;  
  66.                   
  67.                 int s=0;  
  68.                 int n=d;  
  69.                 int temp = d;  
  70.                 while (n >= 8)  
  71.                 {  
  72.                     s++;  
  73.                     n = n / 8;  
  74.                 }  
  75.                 int[] m = new int[s];  
  76.                 int i = 0;  
  77.                 do  
  78.                 {  
  79.                     c = d / 8;  
  80.                     m[i++] = d % 8;  
  81.                     d = c;  
  82.                 } while (c >= 8);  
  83.                 o = d.ToString();  
  84.                 for (int j = m.Length - 1; j >= 0; j--)  
  85.                 {  
  86.                     o += m[j];  
  87.                 }  
  88.             }  
  89.             return o;  
  90.         }  
  91.   
  92.   
  93.         //十进制转十六进制  
  94.         public string DtoX(int d)  
  95.         {  
  96.             string x = "";  
  97.             if (d < 16)  
  98.             {  
  99.                 x = chang(d);  
  100.             }  
  101.             else  
  102.             {  
  103.                 int c;  
  104.                 int s = 0;  
  105.                 int n = d;  
  106.                 int temp = d;  
  107.                 while (n >= 16)  
  108.                 {  
  109.                     s++;  
  110.                     n = n / 16;  
  111.                 }  
  112.                 string [] m = new string[s];  
  113.                 int i = 0;  
  114.                 do  
  115.                 {  
  116.                     c = d / 16;  
  117.                     m[i++] = chang(d % 16);//判断是否大于10,如果大于10,则转换为A~F的格式  
  118.                     d = c;  
  119.                 } while (c >= 16);  
  120.                 x = chang(d);  
  121.                 for (int j = m.Length - 1; j >= 0; j--)  
  122.                 {  
  123.                     x += m[j];  
  124.                 }  
  125.             }  
  126.             return x;  
  127.         }  
  128.   
  129.   
  130.         //判断是否为10~15之间的数,如果是则进行转换  
  131.         public string chang(int d)  
  132.         {  
  133.             string x = "";  
  134.             switch (d)  
  135.             {  
  136.                 case 10:  
  137.                     x = "A";  
  138.                     break;  
  139.                 case 11:  
  140.                     x = "B";  
  141.                     break;  
  142.                 case 12:  
  143.                     x = "C";  
  144.                     break;  
  145.                 case 13:  
  146.                     x = "D";  
  147.                     break;  
  148.                 case 14:  
  149.                     x = "E";  
  150.                     break;  
  151.                 case 15:  
  152.                     x = "F";  
  153.                     break;  
  154.                 default:  
  155.                     x = d.ToString();  
  156.                     break;  
  157.             }  
  158.             return x;  
  159.         }  
  160.   
  161.         private void button1_Click(object sender, EventArgs e)  
  162.         {  
  163.             textBox2.Text = DtoB(Convert.ToInt32(textBox1.Text));//十转二进制  
  164.         }  
  165.   
  166.         private void button2_Click(object sender, EventArgs e)  
  167.         {  
  168.             textBox2.Text = DtoO(Convert.ToInt32(textBox1.Text));//十转八进制  
  169.         }  
  170.   
  171.         private void button3_Click(object sender, EventArgs e)  
  172.         {  
  173.             textBox2.Text = DtoX(Convert.ToInt32(textBox1.Text));//十转十六进制  
  174.         }  
  175.     }  
  176. }