二进制、八进制、十进制、十六进制转换大全

十进制转其他进制的方法:Convert.ToString(value,format)

其他进制转十进制的方法:Convert.ToInt64(value,format)

非十进制转非十进制就是先把其转成十进制,然后再转成其他进制,具体效果如下:

代码如下:先建一个转换类

 public class Transform
    {
        internal string TenToBinary(long value)
        {
            return Convert.ToString(value, 2);
        }

        internal string TenToEight(long value)
        {
            return Convert.ToString(value, 8);
        }

        internal string TenToSixteen(long value)
        {
            return Convert.ToString(value, 16);
        }

        internal string BinaryToEight(long value)
        {
            return Convert.ToString(
                Convert.ToInt64(value.ToString(), 2), 8);
        }

        internal string BinaryToTen(long value)
        {
            return Convert.ToInt64(value.ToString(), 2).ToString();
        }

        internal string BinaryToSixteen(long value)
        {
            return Convert.ToString(
                Convert.ToInt64(value.ToString(), 2), 16);
        }

        internal string EightToBinary(long value)
        {
            return Convert.ToString(
                Convert.ToInt64(value.ToString(), 8), 2);
        }

        internal string EightToTen(long value)
        {
            return Convert.ToInt64(value.ToString(), 8).ToString();
        }

        internal string EightToSixteen(long value)
        {
            return Convert.ToString(
                Convert.ToInt64(value.ToString(), 8), 16);
        }

        internal string SixteenToBinary(long value)
        {
            return Convert.ToString(
                Convert.ToInt64(value.ToString(), 16), 2);
        }

        internal string SixteenToEight(long value)
        {
            return Convert.ToString(
                Convert.ToInt64(value.ToString(), 16), 8);
        }

        internal string SixteenToTen(long value)
        {
            return Convert.ToUInt64(value.ToString(), 16).ToString();
        }

    }

然后进行级联操作:

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            comb_output.Items.AddRange(new object[] {
            "二进制",
            "八进制",
            "十进制",
            "十六进制"});
            comb_input.SelectedIndex = 2;
            comb_output.SelectedIndex = 0;
        }

        private void btn_convert_Click(object sender, EventArgs e)
        {
            long l_long_value=0L;
            Transform l_class_t=new Transform();
            try
            {
                if (long.TryParse(txt_input.Text, out l_long_value))
                {
                    if (comb_input.SelectedIndex == 0)
                    {
                        switch (comb_output.SelectedIndex)
                        {
                            case 0:
                                {
                                    txt_output.Text = l_long_value.ToString();
                                    break;
                                }
                            case 1:
                                {
                                    txt_output.Text =
                                        l_class_t.BinaryToEight(l_long_value);
                                    break;
                                }
                            case 2:
                                {
                                    txt_output.Text =
                                       l_class_t.BinaryToTen(l_long_value);
                                    break;
                                }
                            case 3:
                                {
                                    txt_output.Text =
                                       l_class_t.EightToSixteen(l_long_value);
                                    break;
                                }
                        }
                    }
                    else if (comb_input.SelectedIndex == 1)
                    {
                        switch (comb_output.SelectedIndex)
                        {
                            case 0:
                                {
                                    txt_output.Text =
                                       l_class_t.EightToBinary(l_long_value);
                                    break;
                                }
                            case 1:
                                {
                                    txt_output.Text = l_long_value.ToString();
                                    break;
                                }
                            case 2:
                                {
                                    txt_output.Text =
                                       l_class_t.EightToTen(l_long_value);
                                    break;
                                }
                            case 3:
                                {
                                    txt_output.Text =
                                       l_class_t.EightToSixteen(l_long_value);
                                    break;
                                }
                        }
                    }
                    else if (comb_input.SelectedIndex == 2)
                    {
                        switch (comb_output.SelectedIndex)
                        {
                            case 0:
                                {
                                    txt_output.Text =
                                       l_class_t.TenToBinary(l_long_value);
                                    break;
                                }
                            case 1:
                                {
                                    txt_output.Text =
                                       l_class_t.TenToEight(l_long_value);
                                    break;
                                }
                            case 2:
                                {
                                    txt_output.Text = l_long_value.ToString();
                                    break;
                                }
                            case 3:
                                {
                                    txt_output.Text =
                                       l_class_t.TenToSixteen(l_long_value);
                                    break;
                                }
                        }
                    }
                    else if (comb_input.SelectedIndex == 3)
                    {
                        switch (comb_output.SelectedIndex)
                        {
                            case 0:
                                {
                                    txt_output.Text =
                                       l_class_t.SixteenToBinary(l_long_value);
                                    break;
                                }
                            case 1:
                                {
                                    txt_output.Text =
                                       l_class_t.SixteenToEight(l_long_value);
                                    break;
                                }
                            case 2:
                                {
                                    txt_output.Text =
                                       l_class_t.SixteenToTen(l_long_value);
                                    break;
                                }
                            case 3:
                                {
                                    txt_output.Text = l_long_value.ToString();
                                    break;
                                }
                        }
                    }
                }
                else
                {
                    MessageBox.Show("请输入正确数值");
                }
            }
            catch 
            {
                MessageBox.Show("输入与所选进制不符");
            }
        }
    }

当然这段程序有个BUG,由于本文主要目的在于理清转换关系,再次就不进解决了。

BUG 如下:

原文地址:https://www.cnblogs.com/xuekai-to-sharp/p/3552381.html