c#中十进制转化成二进制代码怎么写?
原来是这样啊?那你看看我现在改的这个可以吗?实现了2、8、10和16进制的转换,如果想要更简单的代码,可以留下联系方式,我发给你。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace JinZhiTest
{
public partial class Form1 : Form
{
private int CurrBase = 10;//当前进制,开始默认为10
public Form1()
{
InitializeComponent();
}
//转换成二进制
private void rdoEr_Click(object sender, EventArgs e)
{
this.JinZhiZhuHuan(CurrBase, 2);
}
//转换成八进制
private void rdoBa_Click(object sender, EventArgs e)
{
this.JinZhiZhuHuan(CurrBase, 8);
}
//转换成十进制
private void rdoShi_Click(object sender, EventArgs e)
{
this.JinZhiZhuHuan(CurrBase, 10);
}
//转换成十六进制
private void rdoShiLiu_Click(object sender, EventArgs e)
{
this.JinZhiZhuHuan(CurrBase, 16);
}
/// <summary>
/// 进制转换
/// </summary>
/// <param name="fromBase">原进制</param>
/// <param name="toBase">目标进制</param>
private void JinZhiZhuHuan(int fromBase, int toBase)
{
//得到文本框中数的十进制
int num = Convert.ToInt32(this.textBox1.Text.Trim(), fromBase);
//将数转换成目标进制的字符串形式并显示在文本框中
this.textBox1.Text = Convert.ToString(num, toBase);
//将目标进制保存为当前进制
this.CurrBase = toBase;
}
}
}
=================================================
没太看明白楼主的意思,不知这样是否符合楼主的需求?
class Program
{
static void Main(string[] args)
{
int shi;//用来保存十进制数
Console.WriteLine("******** 十进制转二进制 ********\n");
Console.Write("请输入十进制整数:");
//从控制台读取十进制整数
shi = Convert.ToInt32(Console.ReadLine());
//将输入的十进制数转换为二进制字符串
string er = Convert.ToString(shi, 2);
//输出二进制字符串
Console.WriteLine("二进制为:"+er);
Console.ReadLine();
}
}
首先给你算法的步骤 理解了算法 才能真正掌握程序
取十进制数
取要转换的基数(这里为二进制)
循环
把十进制数与基数相除的余数压入栈
把十进制数与基数相除的商赋值给新的十进制数
当十进制数不等于0时继续循环
最后把栈中的数据出栈即得到二进制数据
代码
/// <summary>
/// 方法
/// </summary>
/// <param name="n">十进制</param>
/// <param name="b">转换基数(2进制)</param>
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());
}
}
这是比较快的方法
同时还可以利用BitArray来实现 这种就是
string er = Convert.ToString(shi, 2);这样调用的原理
protected void ConvertBits(int val)
{
//掩码
int dispMask = 1 << 31;
//三十二位系统 形式如 00000000 00000000 00000000 00000000
StringBuilder bitBuffer = new StringBuilder(35);
for (int i = 1; i <= 32; i++)
{
if ((val & dispMask) == 0)
{
bitBuffer.Append("0");
}
else
{
bitBuffer.Append("1");
}
val <<= 1;
if ((i % 8) == 0)
{
bitBuffer.Append(" ");
}
}
Console.Write(bitBuffer.ToString());
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DecimalToBinary
{
class Program
{
static string DecimalToBinary(int N)
{
string result = "";
if (N / 2 > 0)
{
result = DecimalToBinary(N / 2) + (N % 2).ToString();
}
else
{
result = (N % 2).ToString();
}
return result;
}
static void Main(string[] args)
{
int N = 31;
Console.Write("Please your Decimal Number: ");
N = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("{0}->{1}", N, DecimalToBinary(N));
Console.ReadKey();
}
}
}