当前位置: 代码迷 >> J2SE >> 一个String 转char的有关问题(16进制)
  详细解决方案

一个String 转char的有关问题(16进制)

热度:99   发布时间:2016-04-24 01:55:55.0
一个String 转char的问题(16进制)急
比如我有一个string str = "0xA0";
这样一个串,有没有什么办法可以转成char s = 0xA0;
注:不是str里单个字符转换,想要的不是srt.charAt(index)这样单个转换;

不知道我表达清楚没有?

------解决方案--------------------
Java code
string str = "0xA0"; int i= str;char c = i;
------解决方案--------------------
Java code
public class TempTest {    /**     * @param args     */    public static void main(String[] args) {        String str = "0xA0";        String rtStr = bytesToHexString(str.getBytes());        System.out.println(rtStr);    }    /** */    /**     * 把字节数组转换成16进制字符串     *      * @param bArray     * @return     */    public static final String bytesToHexString(byte[] bArray) {        StringBuffer sb = new StringBuffer(bArray.length);        String sTemp;        for (int i = 0; i < bArray.length; i++) {            sTemp = Integer.toHexString(0xFF & bArray[i]);            if (sTemp.length() < 2)                sb.append(0);            sb.append(sTemp.toUpperCase());        }        return sb.toString();    }}
------解决方案--------------------
Java code
String s = "0xA0";s = s.replace("0x", "");char c = (char)Integer.parseInt(s, 16);
------解决方案--------------------
路过............
------解决方案--------------------
补充一下
Java code
public class TempTest {    /**     * @param args     */    public static void main(String[] args) {        String str = "0xA0";        String rtStr = bytesToHexString(str.getBytes());        int i = Integer.valueOf(rtStr);        char ch = (char) i;// 将int类型转换成字符        System.out.println(ch);// 输出    }    /** */    /**     * 把字节数组转换成16进制字符串     *      * @param bArray     * @return     */    public static final String bytesToHexString(byte[] bArray) {        StringBuffer sb = new StringBuffer(bArray.length);        String sTemp;        for (int i = 0; i < bArray.length; i++) {            sTemp = Integer.toHexString(0xFF & bArray[i]);            if (sTemp.length() < 2)                sb.append(0);            sb.append(sTemp.toUpperCase());        }        return sb.toString();    }}
------解决方案--------------------

------解决方案--------------------
估计只能用char数组来装了!

------解决方案--------------------
探讨
1楼要注意是非数字型字符转换
2楼转出来还是个Sting,无意义
3楼会溢出,不信你可以试试0xA0和0x80,当超出-128-127这个范围时都溢出,类试的方法都试过

继续等待。。。。

------解决方案--------------------
Java code
public class Test2 {    public static void main(String[] args) {        char c = hex2Char("0x40")[0];        System.out.println(c);    }        public static char[] hex2Char(String hexString) {        if(!hexString.matches("0x[0-9a-fA-F]+")) {            throw new IllegalArgumentException("参数应是一个以 0x 开头的十六进制字符串");        }        int codePoint = Integer.parseInt(hexString.substring(2), 16);        if((codePoint < 0) || (codePoint > Character.MAX_CODE_POINT)) {            throw new IllegalArgumentException(hexString + " 所能表示的字符范围溢出");        }        return Character.toChars(codePoint);    }}
------解决方案--------------------
探讨
Java codepublic class Test2 {
  相关解决方案