数字系统hexToBin和binToHHex之间的转换失败(c#)

本文关键字:失败 转换 之间 系统 hexToBin binToHHex 数字 | 更新日期: 2023-09-27 18:11:58

我用c#编写了一个计算器。计算部分工作得很好,我想添加一个在十进制,二进制和十六进制之间切换的函数。为了转换显示(文本框)中的数字,我做了几个方法。6个作品中的4个。hexToBin和binToHex不工作。文本框仍然显示第一进制的数字。但是,请注意,程序不会失败。当我在bin中输入一个数字时,(尝试)将其转换为十六进制,然后选择dec,它会正确显示十进制的数字。

编辑:在这个开关中,我试图找到问题所在。我发现永远不会显示MessageBoxes。情况H从来都不是真的吗?
        switch (talbas)
        {
            case 'D':
                {
                    //Dec till Bin
                    output = decTillBin(textBoxDisplay.Text);
                }
                break;
            case 'H':
                {
                    MessageBox.Show("Hex till Bin");
                    //Hex till Bin
                    output = hexTillBin(textBoxDisplay.Text);
                    MessageBox.Show(output);
                }
                break;
        }

下面是radioButtons的代码。(注释和名称都是瑞典语,但我想你会明白的)¨

 private void radioButtonDec_CheckedChanged(object sender, EventArgs e)
    {
        if(radioButtonHex.Checked)
            {
                button0.Enabled = true;
                button1.Enabled = true;
                button2.Enabled = true;
                button3.Enabled = true;
                button4.Enabled = true;
                button5.Enabled = true;
                button6.Enabled = true;
                button7.Enabled = true;
                button8.Enabled = true;
                button9.Enabled = true;
                buttonA.Enabled = true;
                buttonB.Enabled = true;
                buttonC.Enabled = true;
                buttonD.Enabled = true;
                buttonE.Enabled = true;
                buttonF.Enabled = true;
                buttonDeci.Enabled = false;
                buttonTeckenByte.Enabled = false;
                switch (talbas)
                {
                    case 'D': 
                        {
                            //Dec till Hex
                            output = decTillHex(textBoxDisplay.Text);
                        }
                        break;
                    case 'B': 
                        {
                            //Bin till Hex
                            output = binTillHex(textBoxDisplay.Text);
                        }
                        break;
                }
                textBoxDisplay.Text = output;
                talbas = 'H';
            }
        else if (radioButtonBin.Checked)
        {
            button0.Enabled = true;
            button1.Enabled = true;
            button2.Enabled = false;
            button3.Enabled = false;
            button4.Enabled = false;
            button5.Enabled = false;
            button6.Enabled = false;
            button7.Enabled = false;
            button8.Enabled = false;
            button9.Enabled = false;
            buttonA.Enabled = false;
            buttonB.Enabled = false;
            buttonC.Enabled = false;
            buttonD.Enabled = false;
            buttonE.Enabled = false;
            buttonF.Enabled = false;
            buttonDeci.Enabled = false;
            buttonTeckenByte.Enabled = false;
            switch (talbas)
            {
                case 'D':
                    {
                        //Dec till Bin
                        output = decTillBin(textBoxDisplay.Text);
                    }
                    break;
                case 'H':
                    {
                        MessageBox.Show("Hex till Bin");
                        //Hex till Bin
                        output = hexTillBin(textBoxDisplay.Text);
                        MessageBox.Show(output);
                    }
                    break;
            }
            textBoxDisplay.Text = output;
            talbas = 'B';
        }
        else if(radioButtonDec.Checked)
        {
            if (talbas == 'B')
            {
                //Bin till Dec
                output = binTillDec(textBoxDisplay.Text);
            }
            else if (talbas == 'H')
            {
                //Hex till Dec
                output = hexTillDec(textBoxDisplay.Text);
            }
                textBoxDisplay.Text = output;
                button0.Enabled = true;
                button1.Enabled = true;
                button2.Enabled = true;
                button3.Enabled = true;
                button4.Enabled = true;
                button5.Enabled = true;
                button6.Enabled = true;
                button7.Enabled = true;
                button8.Enabled = true;
                button9.Enabled = true;
                buttonA.Enabled = false;
                buttonB.Enabled = false;
                buttonC.Enabled = false;
                buttonD.Enabled = false;
                buttonE.Enabled = false;
                buttonF.Enabled = false;
                buttonDeci.Enabled = true;
                talbas = 'D';
        }
        textBoxDisplay.Text = output;
    }

方法是这样的:

    //Byt talsystem
    private string binTillDec(string input)
    {
        //Bin till dec
        decInt = Convert.ToInt32(input, 2);
        decString = decInt.ToString();
        string returnValue = decString;
        return(returnValue);
    }
    private string hexTillDec(string input)
    {
        //Hex till Dec
        decInt = Convert.ToInt32(input, 16);
        decString = decInt.ToString();
        string returnValue = decString;
        return (returnValue);
    }
    private string decTillBin(string input)
    {
        //Dec till Bin
        decInt = int.Parse(input);
        binString = Convert.ToString(decInt, 2);
        string returnValue = binString;
        return (returnValue);
    }
    private string decTillHex(string input)
    {
        //Dec till Hex
        decInt = int.Parse(input);
        hexString = decInt.ToString("X");
        string returnValue = hexString; ;
        return (returnValue);
    }
    private string binTillHex(string input)
    {
        //Bin till Hex
        //Bin till dec
        decInt = Convert.ToInt32(input, 2);
        //Dec till Hex
        hexString = decInt.ToString("X");
        string returnValue = hexString;
        return (returnValue);
    }
    private string hexTillBin(string input)
    {
        //Hex till Bin
        //Hex till Dec
        decInt = Convert.ToInt32(input, 16);
        //Dec till Bin
        binString = Convert.ToString(decInt, 2);
        string returnValue = binString;
        return (returnValue);
    }

数字系统hexToBin和binToHHex之间的转换失败(c#)

库类,用于在任意基数(从2到36)之间转换数字,参见本页。

我希望这对你有帮助