您的位置:首页 > 编程语言 > Java开发

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

2016-05-22 09:34 465 查看
最近做项目,遇到各种进制转换的问题,在这里做个总结,以便今后运用,也可跟大家一起分享。

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进制转换的需求,但在项目中没有碰到,暂时不做总结
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: