读书人

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

发布时间: 2012-03-08 13:30:13 作者: rapoo

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



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 = In…


[解决办法]
探讨
Java codepublic 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 = In…

[解决办法]
探讨
有没有现成的方法?编译器肯定是…

[解决办法]
很麻烦吗?我直接替换了,然后转换就行了

Java code
/** * 16进制字符串转字符或数字。 *  * @author 老紫竹 JAVA世纪网(java2000.net) *  */public class Test {  public static void main(String[] args) {    String s = "0xA0";    int b = Integer.parseInt(s.replaceAll("^0[x|X]", ""), 16);    System.out.println(b);  }}
[解决办法]
谁说的啊,char不是16位的吗?
试想,你用char表示中文的时候,也在-128-127之中吗?
[解决办法]
探讨
Java codepublic 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 = In…

[解决办法]
up
[解决办法]
关注
[解决办法]
探讨
Java codepublicclassTest2 {publicstaticvoidmain(String[] args) {charc=hex2Char("0x40")[0];
System.out.println(c);
}publicstaticchar[] hex2Char(String hexString) {if(!hexString.matches("0x[0-9a-fA-F]+")) {thrownewIllegalArgumentException("参数应是一个以 0x 开头的十六进制字符串");
}intcodePoint=Integer.parseInt(hexString.substring(2),16);if((codePoint<0)||(codePoint>Character.M…

[解决办法]
探讨
很麻烦吗?我直接替换了,然后转换就行了


Java code/**
* 16进制字符串转字符或数字。
*
* @author 老紫竹 JAVA世纪网(java2000.net)
*
*/
public class Test {
public static void main(String[] args) {
String s = "0xA0";
int b = Integer.parseInt(s.replaceAll("^0[x|X]", ""), 16);
System.out.println(b);
}
}

[解决办法]
。。没注意到刚刚说错了,应该是改为int b = Integer.parseInt(s.replaceAll("^0[xX]", ""), 16);
[Xx]之间不用|号,除非是(x|X)

------解决方案--------------------


replaceAll后返回的值是新的值,但是旧的String对象依然没变~~呵呵
我觉得这题目用Regular Expression来解决最合适了。

读书人网 >J2SE开发

热点推荐