java 有符号十六进制转十进制

这篇博客分享了一段Java代码,用于实现有符号16进制数转换为10进制数的功能。作者在找不到现成的解决方案后,决定自己编写,并详细解释了代码的工作原理,包括对负数的处理。此外,还提供了一个辅助函数将10进制数转换为16进制,以及将16进制转换为二进制的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上搜了好久,都没发现存在符号的16进制转成10进制,没办法,只能自己写一个了,记录一下

/**
	 * 有符号16进制转10进制
	 * @param strHex
	 * @return
	 */
	public static int signedHexToDec(String strHex){
			if(strHex.length()==0){
				return 0;
			}
			int x = 0;
            //带符号十六进制转换十进制
            String fristNum = strHex.substring(0, 1);
            String hexStr2Byte = parseHexStr2Byte(fristNum);
            String flag = hexStr2Byte.substring(0, 1);
            if("1".equals(flag)){
            	StringBuffer sb = new StringBuffer();
            	for (int i = 0; i < strHex.length(); i++) {
            		String num = strHex.substring(i, i+1);
            		int decNum = Integer.parseInt(num,16);
            		int a = decNum^15;
            		sb.append(intToHex(a));
				}
            	x = -Integer.parseInt(sb.toString(),16)-1;
            }else{
            	x = Integer.parseInt(strHex,16);
            }
            
            return x;
 			
        }

	//十进制转16进制
	private static String intToHex(int n) {
        StringBuffer s = new StringBuffer();
        String a;
        char []b = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        while(n != 0){
            s = s.append(b[n%16]);
            n = n/16;            
        }
        a = s.reverse().toString();
        return a;
    }
	
    /**
     * 将16进制转换为二进制
     * 
     * @param hexStr
     * @return
     */
    public static String parseHexStr2Byte(String hexStr) {
        if (hexStr.length() == 0)
            return null;
        int sint=Integer.valueOf(hexStr, 16);
        //十进制在转换成二进制的字符串形式输出!
        String bin=Integer.toBinaryString(sint);
        for (int i = bin.length(); i < 4; i++) {
    		bin = "0"+bin;
		}
        return bin;
    }
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值