十进制与十六进制、二进制、八进制之间的转换(Java)

十进制与十六进制、二进制、八进制之间的转换

package com.test;

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());
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值