java各种数据类型的转换问题

最近做项目,遇到各种进制转换的问题,在这里做个总结,以便今后运用,也可跟大家一起分享。

1,字符串转换成16进制:

假设我有一个5位的字符串,我需要转化成16进制数来表示:

public static String toHexString(String s) {  
     String str = "";  
     for (int i = 0; i < s.length(); i++) {  
         //将s的第i位转换成对应数字表示
      int ch = (int) s.charAt(i); 
         //将数字转换成对应的16进制字符表示 
      String s4 = Integer.toHexString(ch);  
         //每两个16进制之间补空格
      str = str + s4+" ";  
     }  
    
     return str;  
    }  

至于转换后有什么作用,运用场景在哪不是很明确,希望大家分享。



2,16进制转字符串:

// 转化十六进制编码为字符串
	 public static String hexToString(String s)
	 {
         //定义一个长度为传入16进制长度一半的字节数组,为什么是一半自己考虑
         byte[] baKeyword = new byte[s.length()/2];
	 for(int i = 0; i < baKeyword.length; i++)
	 {
	 try
	 {
         //取两位16进制转化为整数,再将其转化为字节(与0xff相与的作用是将长度变为8位,满足1个字节的条件)
         baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
	 }
	 catch(Exception e)
	 {
	 e.printStackTrace();
	 }
	 }
	 try
	 {
         //将得到的字节用utf-8的形式转换为对应的字符
        s = new String(baKeyword, "utf-8");//UTF-16le:Not
	 }
	 catch (Exception e1)
	 {
	 e1.printStackTrace();
	 }
	 return s;
	 } 
当得到一串16进制数时,我们希望得到这串数据中对应的字符可以用该方法。



3,十进制数转化成16进制数:

关键代码只有一行,但要注意在前面补0

 public static String intToHexString(int getNum,int num){
               //传入的参数为对应的10进制数和希望转化为多少字节(因为一个int型的数可能一字节表示不了)
               //将10进制转化为对应的16进制字符串,没有补0
               String getHex=Integer.toHexString(getNum);
              //转化为1个字节长度
              if(num==1){
			if(getHex.length()==1){
				getHex="0"+getHex;
			}
			return getHex;
		} 
		//转化为2个字节长度
                if(num==2){
			if(getHex.length()==1){
				getHex="000"+getHex;
			}
			if(getHex.length()==2){
				getHex="00"+getHex;
			}
			if(getHex.length()==3){
				getHex="0"+getHex;
			}
			return getHex.substring(0, 2)+" "+getHex.substring(2, 4);
		} 
                //转化为3个字节长度
                if(num==3){
            if(getHex.length()==1){
                getHex="00000"+getHex;
            }
            if(getHex.length()==2){
                getHex="0000"+getHex;
            }
            if(getHex.length()==3){
                getHex="000"+getHex;
            }
            if(getHex.length()==4){
                getHex="00"+getHex;
            }
            if(getHex.length()==5){
                getHex="0"+getHex;
            }
            return getHex.substring(0, 2)+" "+getHex.substring(2, 4)+" "+getHex.substring(4, 6);
        } 
        return "";
     }

 

4,16进制转化为10进制

int a=Integer.parseInt("A1", 16);


可能还有跟2进制转换的需求,但在项目中没有碰到,暂时不做总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值