日期:2014-05-19  浏览次数:21006 次

十进制int和double转换成二进制
例如说有一两个变量
int   x;

double   y;
怎样转换成二进制?

------解决方案--------------------
在.NET Framework中,System.Convert类中提供了较为全面的各种类型、数值之间的转换功能。其中的两个方法可以轻松的实现各种进制的数值间的转换:

Convert.ToInt32(string value, int fromBase):

可以把不同进制数值的字符串转换为数字,其中fromBase参数为进制的格式,只能是2、8、10及16:

如Convert.ToInt32(”0010”,2)执行的结果为2;

Convert.ToString(int value, int toBase):

可以把一个数字转换为不同进制数值的字符串格式,其中toBase参数为进制的格式,只能是2、8、10及16:

如Convert.ToString(2,2)执行的结果为”0010”

现在我们做一个方法实现各种进制间的字符串自由转换:选把它转成数值型,然后再转成相应的进制的字符串:

public string ConvertString(string value, int fromBase, int toBase)

{

int intValue = Convert.ToInt32(value, fromBase);

return Convert.ToString(intValue, toBase);
}

其中fromBase为原来的格式

toBase为将要转换成的格式


------解决方案--------------------
using System;

class Test {
static void Main() {
foreach (int a in new int [] {0, 123456789, -123456789})
Console.WriteLine( "dec:{0,10} hex:{1,8} bin:{2,32} ", a, a.ToString( "X "), Int2Bin(a));
}

public static string Int2Bin(int n)
{
uint un = (uint)n;
string s = null, t = null;
for (; un > 0; un /= 2) s += un % 2;
if (s == null) s = "0 ";
for (int i = s.Length - 1; i > = 0; i--) t += s[i];
return t;
}
}

运行结果如下:
dec: 0 hex: 0 bin: 0
dec: 123456789 hex: 75BCD15 bin: 111010110111100110100010101
dec:-123456789 hex:F8A432EB bin:11111000101001000011001011101011