Java、十六进制转二进制

        编写一个程序,提示用户输入一个十六进制数,显示其对应的二进制数。对于不正确的输入数字,提示非法输入。


package pack2;

import java.util.Scanner;

public class HexToBinary {

	public static void main(String[] args) {
		try(Scanner input = new Scanner(System.in);) {
			System.out.print("Enter a hex digit: ");
			String hex = input.next();
			
			System.out.println((isHex(hex)) ? "The binary value is "+binaryValue(hex) : 
                 hex+" is an invalid input");
		}
	}
	
	//判定是否为十六进制数
	public static boolean isHex(String hex) {
		int digit;
		try {	//字符串直接转换为数字,存在字符时会自动抛出异常
			digit = Integer.parseInt(hex);
		}catch (Exception e) {	//字符串存在字母时,捕获异常并转换为数字
			digit = hex.charAt(0) - 'A' + 10;
		}
		
		return (0 <= digit && digit <= 15) ? true : false;
	}

	//获取二进制
	public static String binaryValue(String hex) {
//		String binary = "";
//		switch(hex) {
//		case "0": binary = "0000"; break;
//		case "1": binary = "0001"; break;
//		case "2": binary = "0010"; break;
//		case "3": binary = "0011"; break;
//		case "4": binary = "0100"; break;
//		case "5": binary = "0101"; break;
//		case "6": binary = "0110"; break;
//		case "7": binary = "0111"; break;
//		case "8": binary = "1000"; break;
//		case "9": binary = "1001"; break;
//		case "A": binary = "1010"; break;
//		case "B": binary = "1011"; break;
//		case "C": binary = "1100"; break;
//		case "D": binary = "1101"; break;
//		case "E": binary = "1110"; break;
//		case "F": binary = "1111"; break;
//		}
//		return binary;
		
		//创建字符串缓冲器对象
		StringBuffer stringBuffer = new StringBuffer(6);
		int digit;
		try {
			digit = Integer.parseInt(hex);
		}catch (Exception e) {
			digit = hex.charAt(0) - 'A' + 10;
		}
		
		while(digit != 0) {	//转换为二进制
			stringBuffer.append(digit % 2);
			digit /= 2;
		}
		
		//二进制长度小于4时补0
		while(stringBuffer.length() < 4) stringBuffer.append(0);
		return stringBuffer.reverse().toString();	//返回逆转的字符串
	}
}

 

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值