黑马程序员技术交流社区
标题:
java自定义函数实现二进制、八进制、十六进制转换
[打印本页]
作者:
冰深
时间:
2012-11-30 11:06
标题:
java自定义函数实现二进制、八进制、十六进制转换
本帖最后由 冰深 于 2012-11-30 11:08 编辑
Java进制转换方法:移位法进行进制转换的几个方法,下面是我写的,总结一下~源代码都在下面哦~
package cn.itheima;
public class ToHexBinOctDemo {
/**移位法实现8进制,二进制,十进制转换
* @param args
*/
public static void main(String[] args) {
int num=13;
//用Java内置函数与自定义函数输出结果进行对比
System.out.println(Integer.toHexString(num));
System.out.println(toHex(num));
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println(Integer.toBinaryString(num));
System.out.println(toBin(num));
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println(Integer.toOctalString(num));
System.out.println(toOct(num));
}
//查表发返回查询16进制的字符串
public static char getCharHex(int index){
char[] hexChars={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
return hexChars[index];
}
//查表发返回查询2进制的字符串
public static char getCharBin(int index){
char[] binChars={'0','1'};
return binChars[index];
}
//转换成16进制,用的是移位4
private static String toHex(int num) {
StringBuffer sb=new StringBuffer();
for(int i=0;i<8;i++){
int temp=num & 15;//进行&操作(1111)2 =15
num=num>>>4;
sb.append(getCharHex(temp));
}
//将反转之后的结果返回
return new String(sb.reverse());
}
//转换成2进制,用的也是移位1
private static String toBin(int num){
StringBuffer sb=new StringBuffer();
while(num!=0){
int index=num&1;//进行&操作(1)2 =1
sb.append(getCharBin(index));
num=num>>>1;
}
return new String(sb.reverse());
}
//转换成8进制,用移位3;
private static String toOct(int num){
StringBuffer sb=new StringBuffer();
while(num!=0){
int index=num&7;//进行&操作(111)2 =7
sb.append(index);
num=num>>>3;
}
return new String(sb.reverse());
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2