C# C语言中十进制到二进制的转换#
按中的按钮1时,应从textBox1中提取十进制数,并在textBox1中显示二进制数。在将num转换为Int32时不断获取和出错C# C语言中十进制到二进制的转换#,c#,while-loop,binary,C#,While Loop,Binary,按中的按钮1时,应从textBox1中提取十进制数,并在textBox1中显示二进制数。在将num转换为Int32时不断获取和出错 private void button1_Click(object sender, EventArgs e) { int num; // The number input into textBox1 int quot; num = Convert.ToInt32(textBox1.Text);
private void button1_Click(object sender, EventArgs e)
{
int num; // The number input into textBox1
int quot;
num = Convert.ToInt32(textBox1.Text);
string rem;
while(num > 1)
{
quot = num / 2;
rem += (num % 2).ToString();
num = quot;
}
string bin =" ";
for (int i = rem.Length - 1; i >= 0; i--)
{
bin = bin + rem[i];
}
textBox1.Text = bin.ToString();
}
您可以简单地使用Convert类
string bin = Convert.ToString(num, 2);
看到这个方法了吗
Convert.ToString方法(Int32,Int32)
将32位有符号整数的值转换为指定基中的等效字符串表示形式
编辑:
这里也回答了类似的问题试试这个
private void button1_Click(object sender, EventArgs e)
{
double dbVlaue = Convert.ToDouble(textBox1.Text);
int quot;
int num;
num = Convert.ToInt32(dbVlaue);
string rem = string.Empty;
while (num > 1)
{
quot = num / 2;
rem += (num % 2).ToString();
num = quot;
}
string bin = " ";
for (int i = rem.Length - 1; i >= 0; i--)
{
bin = bin + rem[i];
}
textBox1.Text = bin.ToString();
}
“while(num>1)”只需更改此行,而(num>0)它将给出完整答案。例如
如果您运行这个循环“while(num>1)”,并且您给出任何输入值8以将其转换为二进制,那么答案必须是1000,但是这个程序不给您这个程序的输出将是000,最后一个数字将不会显示,因为循环会自行终止
但是
如果“while(num>0)”运行此循环,则输出结果已完成并更正。8的结果将显示1000。现在,程序已完成二进制转换,所有其他代码均正确。只需在循环中进行更改即可错误到底是什么?在哪一条线上?
textBox1.Text
的值是多少?您的CurrentCulture
是什么?“在将num转换为Int32时不断获取并出错”您在哪里进行此转换?除此之外,这不会编译,因为rem
没有明确指定。可能您只需要像textBox1.Text.Trim()
这样的内容,或者检查textBox1.Text
是否为空。
private void button1_Click(object sender, EventArgs e)
{
double dbVlaue = Convert.ToDouble(textBox1.Text);
int quot;
int num;
num = Convert.ToInt32(dbVlaue);
string rem = string.Empty;
while (num > 1)
{
quot = num / 2;
rem += (num % 2).ToString();
num = quot;
}
string bin = " ";
for (int i = rem.Length - 1; i >= 0; i--)
{
bin = bin + rem[i];
}
textBox1.Text = bin.ToString();
}