zoukankan      html  css  js  c++  java
  • 二进制、八进制、十进制、十六进制转换大全

    十进制转其他进制的方法: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 如下:

  • 相关阅读:
    值得推荐的C/C++框架和库
    P2P技术基础: 关于TCP打洞技术
    Java FileInputStream与FileReader的区别
    如何理解java采用Unicode编码
    细说:Unicode, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4
    程序员趣味读物:谈谈Unicode编码
    字符编码笔记:ASCII,Unicode 和 UTF-8
    Java并发编程:volatile关键字解析(转)
    java线程安全问题之静态变量、实例变量、局部变量
    Hystrix使用详解
  • 原文地址:https://www.cnblogs.com/xuekai-to-sharp/p/3552381.html
Copyright © 2011-2022 走看看