日期:2014-05-20  浏览次数:21011 次

一个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 {