JAVA 十六进制数字符串数和十进制数字符串互转的方法(个别方法也适用于其他进制之间的转换)

方法1:使用Integer自带的方法以十进制获取数值,并以十六进制输出为字符串

使用该方法也能实现其他进制数之间的互转,但是使用Int类型也就意味着能转的数值不能大于2147483647。

    /**
	 * 十进制数据转换为十六进制字符串数
	 * 
	 * @param dec
	 * @return
	 */
	public static String decToHex(String dec) {
        int data = Integer.parseInt(dec, 10);
		return Integer.toString(data, 16);
	}
    /**
	 * 十六进制数据转换为十进制字符串数
	 * 
	 * @param hex
	 * @return
	 */
	public static String hexToDec(String hex) {
        int data = Integer.parseInt(hex, 16);
		return Integer.toString(data, 10);
	}

方法2:通过数值的计算获取十六进制数值

这里使用BigDecimal类进行计算以打破方法1的范围限制,但是该方法只能用于十进制数转十六进制数,无法做到方法1的其他进制之间也能转换。

    /**
	 * 十进制数据转换为十六进制字符串数
	 * 
	 * @param dec
	 * @return
	 */
	public static String decToHex(String dec) {
        BigDecimal sixteen = new BigDecimal(16);
		BigDecimal n = new BigDecimal(dec);
		StringBuffer sb = new StringBuffer(8);
		String a;
		char[] b = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
		/**判断是否为0*/
		if (n.compareTo(BigDecimal.ZERO)==0) {
			return n.toString();
		}
		while (n.compareTo(BigDecimal.ZERO)!=0) {
			/**BigDecimal除法取余数*/
			sb = sb.append(b[n.remainder(sixteen).intValue()]);
			/**BigDecimal除法,省略小数点后的位数且不进位*/
			n = n.divide(sixteen,0,BigDecimal.ROUND_DOWN);
		}
		a = sb.reverse().toString();
		return a;
	}

方法3:使用BigInteger获取十进制字符串,并以十六进制数输出字符串

使用BigInteger类进行处理,一方面解决了int类的大小限制,也能由于处理其他进制数值之间的转换

	/**
	 * 十进制数据转换为十六进制字符串数
	 * 
	 * @param dec
	 * @return
	 */
	public static String decToHex(String dec) {
		BigInteger data = new BigInteger(dec,10);
		return data.toString(16);
	}
	/**
	 * 十六进制数据转换为十进制字符串数
	 * 
	 * @param hex
	 * @return
	 */
	public static String hexToDec(String hex) {
		BigInteger data = new BigInteger(hex,16);
		return data.toString(10);
	}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值