求用c#语言写一个将十进制转换为二进制的程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求用c#语言写一个将十进制转换为二进制的程序相关的知识,希望对你有一定的参考价值。
用堆栈
请确定可用
如果要用堆栈,那就比较麻烦,也没有必要
///
///
堆栈
///
private
stack
intstack
=
new
stack
(
5
);
public
void
dtob(
int
inum
)
intstack.push(
inum
%
2
);
//
余数入栈
int
d
=
inum
/
2;
if
(
d
!=
0
)
dtob(
d
);
//
求下一个二进制位
return;
//下面是调用程序
public
static
void
main()
intstack.clear();
dtob(
11
);
stringbuilder
s
=
new
stringbuilder();
while
(
intstack.count
!=
0
)
s.insert(
0,
intstack.pop()
);
//
从堆栈中取出所有的二进制位
messagebox.show(
"二进制数:"
+
s.tostring()
);
//要转换下面的方法更简单,而且效率更高
public
string
dtob1(
int
inum
)
int
len
=
sizeof(
int
)
*
8;
stringbuilder
s
=
new
stringbuilder();
int
exmple
=
1
<<
len
-
1;
int
tmp
=
inum;
for
(
int
i
=
0;
i
<
len;
i++
)
if
(
(
tmp
&
exmple
)
==
0
)
s.append(
"0"
);
else
s.append(
"1"
);
tmp
<<=
1;
return
s.tostring();
参考技术A ///
///
堆栈
///
private
Stack
Intstack
=
new
Stack
(
5
);
public
void
DtoB(
int
iNum
)
Intstack.Push(
iNum
%
2
);
//
余数入栈
int
d
=
iNum
/
2;
if
(
d
!=
0
)
DtoB(
d
);
//
求下一个二进制位
return;
//下面是调用程序
public
static
void
Main()
Intstack.Clear();
DtoB(
11
);
StringBuilder
s
=
new
StringBuilder();
while
(
Intstack.Count
!=
0
)
s.Insert(
0,
Intstack.Pop()
);
//
从堆栈中取出所有的二进制位
MessageBox.Show(
"二进制数:"
+
s.ToString()
);
//要转换下面的方法更简单,而且效率更高
public
string
DtoB1(
int
iNum
)
int
len
=
sizeof(
int
)
*
8;
StringBuilder
s
=
new
StringBuilder();
int
exmple
=
1
<<
len
-
1;
int
tmp
=
iNum;
for
(
int
i
=
0;
i
<
len;
i++
)
if
(
(
tmp
&
exmple
)
==
0
)
s.Append(
"0"
);
else
s.Append(
"1"
);
tmp
<<=
1;
return
s.ToString();
参考技术B /*@file TenToX.cs*/
/*功能:用堆栈实现10进制到2,8,16进制的数字转换*/
using System;
using System.Collections;
class TenToX
static void Main(string[] args)
int num, baseNum;
Console.Write("输入十进制数字: ");
num = Convert.ToInt32(Console.ReadLine());
Console.Write("选择进制类型[2/8/16]: ");
baseNum = Convert.ToInt32(Console.ReadLine());
Console.Write(num + "=>转换 ");
MulBase(num, baseNum);
Console.WriteLine(" 进制基数" + baseNum);
Console.Read();
//用堆栈转换实现N进制间转换
static void MulBase(int n, int b)
Stack Digits = new Stack();
do
Digits.Push(n % b);
n /= b;
while (n != 0);
while (Digits.Count > 0)
Console.Write(Digits.Pop());
//end class
功能多了一些,稍微删减就行本回答被提问者采纳 参考技术C /// <summary>
/// 堆栈
/// </summary>
private Stack<int> Intstack = new Stack<int>( 5 );
public void DtoB( int iNum )
Intstack.Push( iNum % 2 ); // 余数入栈
int d = iNum / 2;
if ( d != 0 )
DtoB( d ); // 求下一个二进制位
return;
//下面是调用程序
public static void Main()
Intstack.Clear();
DtoB( 11 );
StringBuilder s = new StringBuilder();
while ( Intstack.Count != 0 )
s.Insert( 0, Intstack.Pop() ); // 从堆栈中取出所有的二进制位
MessageBox.Show( "二进制数:" + s.ToString() );
//要转换下面的方法更简单,而且效率更高
public string DtoB1( int iNum )
int len = sizeof( int ) * 8;
StringBuilder s = new StringBuilder();
int exmple = 1 << len - 1;
int tmp = iNum;
for ( int i = 0; i < len; i++ )
if ( ( tmp & exmple ) == 0 )
s.Append( "0" );
else
s.Append( "1" );
tmp <<= 1;
return s.ToString();
参考技术D C行吗?
C# 高级语言的 “进制转换”
很多时候需要使用到进制转换 经常使用的有:
2转10 10转16 进制
C#中这已经给封装好了 直接使用就可以了
不需要自己写 这就是高级语言的好处
编写进制转换工具:
二进制转十进制:
string str =Console.ReadLine(); //键盘输入
Console.WriteLine(Convert.ToInt32(str, 2));//输出结果
非常简单只有简单的一行
效果:
需要注意的是键盘输入必须得是 字符串(string)类型的 不然就会报错
十进制转二进制:
int n =Convert.ToInt32(Console.ReadLine());
Console.WriteLine(Convert.ToString(n, 2));
进去的是int出来的是string
效果图:
十进制转八进制:
int n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(Convert.ToString(n, 8));
都是大同小异
效果图:
十进制转十六进制:
int n =Convert.ToInt32(Console.ReadLine());
Console.WriteLine(Convert.ToString(n, 16));
进去的类型是int 出的是string
效果图:
十六进制转二进制:
Console.WriteLine(Convert.ToString(0xa, 2));
效果图:
16进制a转成二进制为 1010
十六进制转十进制:
string str =Console.ReadLine();
Console.WriteLine(Convert.ToInt32(str,16));
八进制转十进制:
string str =Console.ReadLine();
Console.WriteLine(Convert.ToInt32(str,8));
效果图:
方法都是大同小异,简单的一行
例子:
使用窗体应用编写进制转换小工具
代码写在文本框的事件下 这样就不需要点击按钮就可以计算
代码:
try
{
int n = Convert.ToInt32(textBox1.Text);
label5.Text = Convert.ToString(n,2);
}
catch {
label5.Text = "不是二进制数字";
}
//10转2
try
{
int n = Convert.ToInt32(textBox1.Text);
label6.Text =Convert.ToString(n, 8);
}
catch {
label6.Text = "不是八进制数字";
}
//10转8
try
{
int n = Convert.ToInt32(textBox1.Text);
label7.Text = Convert.ToString(n, 16);
}
catch
{
label7.Text = "不是十六进制数字";
}
//10转16
try
{
int n = Convert.ToInt32(textBox1.Text);
label8.Text = Convert.ToString(n,2);
}
catch {
label8.Text = "不是二进制进制数字";
}
//2转10
纯手打,点个赞呗~
以上是关于求用c#语言写一个将十进制转换为二进制的程序的主要内容,如果未能解决你的问题,请参考以下文章