//十进制转二制
public string DtoB(int d)
{
string b = “”;
//判断该数如果小于2,则直接输出
if (d < 2)
{
b = d.ToString();
}
else
{
int c;
int s = 0;
int n = d;
while (n >= 2)
{
s++;
n = n / 2;
}
int[] m = new int[s];
int i = 0;
do
{
c = d / 2;
m[i++] = d % 2;
d = c;
} while (c >= 2);
b = d.ToString();
for (int j = m.Length – 1; j >=0; j–)
{
b += m[j].ToString ();
}
}
return b;
}
//十进制转八进制
public string DtoO(int d)
{
string o = “”;
if (d < 8)
{
o = d.ToString();
}
else
{
int c;
int s=0;
int n=d;
int temp = d;
while (n >= 8)
{
s++;
n = n / 8;
}
int[] m = new int[s];
int i = 0;
do
{
c = d / 8;
m[i++] = d % 8;
d = c;
} while (c >= 8);
o = d.ToString();
for (int j = m.Length – 1; j >= 0; j–)
{
o += m[j];
}
}
return o;
}
//十进制转十六进制
public string DtoX(int d)
{
string x = “”;
if (d < 16)
{
x = chang(d);
}
else
{
int c;
int s = 0;
int n = d;
int temp = d;
while (n >= 16)
{
s++;
n = n / 16;
}
string [] m = new string[s];
int i = 0;
do
{
c = d / 16;
m[i++] = chang(d % 16);//判断是否大于10,如果大于10,则转换为A~F的格式
d = c;
} while (c >= 16);
x = chang(d);
for (int j = m.Length – 1; j >= 0; j–)
{
x += m[j];
}
}
return x;
}
//判断是否为10~15之间的数,如果是则进行转换
public string chang(int d)
{
string x = “”;
switch (d)
{
case 10:
x = “A”;
break;
case 11:
x = “B”;
break;
case 12:
x = “C”;
break;
case 13:
x = “D”;
break;
case 14:
x = “E”;
break;
case 15:
x = “F”;
break;
default:
x = d.ToString();
break;
}
return x;
}
还有一种办法,效率更加高,那就是移位操作,给出10进制转16进制的一个算法
public static String dec2Hex(int dec) { StringBuffer sb =new StringBuffer(); sb.append(“0x”); for (int i =0; i <8; i++) { int tmp = (dec >> (7- i %8) *4) &0x0f; if (tmp <10) sb.append(tmp); else sb.append((char) (‘A’+ (tmp -10))); } return sb.toString(); }