数字系统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);
}
库类,用于在任意基数(从2到36)之间转换数字,参见本页。
我希望这对你有帮助