import java.util.ArrayList;class ComHex{
void comHex(String scrString){
ArrayList hexNum = new ArrayList();
char[] a = scrString.toCharArray();
for(int i = 0; i < a.length; i++){
if('a'==a[i])
hexNum.add(10);
else if('b'==a[i])
hexNum.add(11);
else if('c'==a[i])
hexNum.add(12);
else if('d'==a[i])
hexNum.add(13);
else if('e'==a[i])
hexNum.add(14);
else if('f'==a[i])
hexNum.add(15);
else
hexNum.add(a[i]);
}
for(int n = 0; n < a.length; n++)
System.out.println(hexNum.get(n));
}
}public class Hex {
public static void main(String[] args){
ComHex scr = new ComHex();
scr.comHex("abcdef");
}
}
现在得到的hexNum数组类型是字符窜的,怎么把数组类型转换为整数类型数组?

解决方案 »

  1.   

    hexNum.add(13);这加进去的就是Integer类的对象呀
      

  2.   

    else
    hexNum.add(a[i]);a[i]是字符窜,加这个进去不是变成字符窜类型了吗?
    如果是Integer类型,如下初始化数组应该正确才是呀,可是如果这样初始化了,程序就错误了。
    ArrayList<Integer> hexNum = new ArrayList<Integer>();
      

  3.   

    通过测试,把
    else
    hexNum.add(a[i]);
    改成如下就正确了:
    else
    hexNum.add((int)a[i] - 48);
    但不晓得为什么我把字符转成int后数值就边大了,我得减掉48结果才符合?
      

  4.   

    else
    hexNum.add(a[i]);它是个字符型,所以将你的hexNum自动转成字符型数组了。而且你的数组也不应该是Integer型的,如果是Integer的话,你程序的else部分就不对了。
      

  5.   

    不知道你要干吗~hexNum.add(a[i]);这里如过你要转整型的话就改成
    import java.util.ArrayList;class ComHex {
    void comHex(String scrString) {
    ArrayList hexNum = new ArrayList();
    char[] a = scrString.toCharArray();
    for (int i = 0; i < a.length; i++) {
    if ('a' == a[i])
    hexNum.add(10);
    else if ('b' == a[i])
    hexNum.add(11);
    else if ('c' == a[i])
    hexNum.add(12);
    else if ('d' == a[i])
    hexNum.add(13);
    else if ('e' == a[i])
    hexNum.add(14);
    else if ('f' == a[i])
    hexNum.add(15);
    else
    hexNum.add((int)a[i]);
    }
    for (int n = 0; n < a.length; n++)
    System.out.println(hexNum.get(n));
    }
    }public class Hex {
    public static void main(String[] args) {
    ComHex scr = new ComHex();
    scr.comHex("abcdefgh");
    }
    }
    ------------------------
    hexNum.add((int)a[i]);
    那如果不是abcdef里面的,存的就是Unicode码了
      

  6.   

    hexNum.add((int)a[i]);
    那我怎么转他才不是unicode呢,才能得到正常的整数型数组?
    我是写一个16进制转换10进制代码,虽然java方法可以实现,但我是新手,前几天上课有关于2进制,10进制,16进制之间的转换,自己想动手弄个计算公式,强化一下对java的认识而已,呵呵,当自己傻瓜,虽然是些没意义的工作,但玩玩也不错。
      

  7.   

    明白了...
    就像你那样
    hexNum.add((int)a[i] - 48);就可以了
    或者
    hexNum.add(Integer.parseInt(String.valueOf(a[i])));
      

  8.   

    '1'的unicode是0x31,就是49
    减去48就是1