当前位置: 代码迷 >> J2SE >> 十六进制转字符串乱码有关问题
  详细解决方案

十六进制转字符串乱码有关问题

热度:12   发布时间:2016-04-24 12:19:23.0
十六进制转字符串乱码问题
我这里想把一个十六进制数转为字符串,可是乱码了,请大家帮忙解决一下,代码如下,我在网上找了很多都发现和他们的一样,但是我这里就是乱码,返回的“???”,唉~

Java code
package cn.com.jiayi.test;public class Test {    public static void main(String [] args){        String s = "FFFFFF";        byte[] baKeyword = new byte[s.length() / 2];        for (int i = 0; i < baKeyword.length; i++) {            try {                baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(                        i * 2, i * 2 + 2), 16));            } catch (Exception e) {                e.printStackTrace();            }        }        try {            s = new String(baKeyword, "UTF-8");            System.out.println(s);        } catch (Exception e1) {            e1.printStackTrace();        }    }}


------解决方案--------------------
按我理解的那样,直接可以这样搞定,
Java code
public class Test {    public static void main(String [] args){        String s = "FFFFFF";//        s="00000F";        int a=Integer.parseInt(s,16);        System.out.println(a);    }}
------解决方案--------------------
Java code
String s = "3031323334";        byte[] baKeyword = new byte[s.length() / 2];        for (int i = 0; i < baKeyword.length; i++) {            try {                baKeyword[i] = (byte) (0xff & Integer.parseInt(                        s.substring(i * 2, i * 2 + 2), 16));            } catch (Exception e) {                e.printStackTrace();            }        }        try {            s = new String(baKeyword, "UTF-8");            System.out.println(s);        } catch (Exception e1) {            e1.printStackTrace();        }
------解决方案--------------------
Java code
    //1. byte最大只能存储127    //2. 汉字需要计算4个byte    //3. 汉字编码范围从4E00到9FA5    //4. 写在代码里并且只是在控制台显示的话不需要转码        public static void main(String [] args){        String s = "62114EEC";        char[] baKeyword = new char[s.length() / 4];        for (int i = 0; i < baKeyword.length; i++) {            try {                baKeyword[i] = (char)Integer.parseInt(s.substring(i * 4, i * 4 + 4), 16);            } catch (Exception e) {                e.printStackTrace();            }        }        try {            System.out.println(baKeyword);        } catch (Exception e1) {            e1.printStackTrace();        }    }
------解决方案--------------------
public class Test {
public static void main(String [] args){
String s = "FFFFFF";
int a=Integer.parseInt(s,16);
System.out.println(a);
}
}
  相关解决方案