在书上看见一道题,要求将十进制转为十六进制,刚开始时不知道Integer中的toHexString()方法就是用来将十进制转十六进制的,于是自已写了一个方法,代码如下:
/**
*十进制转为十六进制。
**/
public static String toHexString(int a){
int yushu=a%16; //余数
int quotient=a/16; //商
String hexadecimal=""+shuzhiToZhimu(yushu); //十六进制数
while (quotient>0)
{
yushu=quotient%16;
quotient=quotient/16;
hexadecimal=""+shuzhiToZhimu(yushu)+hexadecimal;
}
return hexadecimal;
}
//将数值转化为十六进制表示方式。
private static String shuzhiToZhimu(int a){
switch (a)
{
case 10:
return "A";
case 11:
return "B";
case 12:
return "C";
case 13:
return "D";
case 14:
return "E";
case 15:
return "F";
}
return ""+a;
}
上面的方法可以将其转为通用代码,更改如:
/**
* 进制转换
* @author 莫笑书生
* @version V1.1 2010-01-10 *
*/
public class Jinzhi {
/**
* 十进制转化其他进制
* @param a 要转换的十进制数
* @param b 进制 类型 如十六进制就为16,八进制为8
* @return str 返回b进制类型 的字符串。
*/
public static String decimalToX(int a,int b){
int yushu=a%b; //余数
int quotient=a/b; //商
String str=""+shuzhiToZhimu(yushu); //十六进制数
while (quotient>0)
{
yushu=quotient%b;
quotient=quotient/b;
str=""+shuzhiToZhimu(yushu)+str;
}
return str;
}
/**
* 将数值转化为十六进制表示方式。 *
*/
private static String shuzhiToZhimu(int a){
switch (a)
{
case 10:
return "A";
case 11:
return "B";
case 12:
return "C";
case 13:
return "D";
case 14:
return "E";
case 15:
return "F";
}
return ""+a;
}
/**
* 测试方法。
* @param args
*/
public static void main(String[] args) {
System.out.println("十进制转十六进制:0x"+Jinzhi.decimalToX(170,16));
}
}