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数组类型是字符窜的,怎么把数组类型转换为整数类型数组?
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数组类型是字符窜的,怎么把数组类型转换为整数类型数组?
hexNum.add(a[i]);a[i]是字符窜,加这个进去不是变成字符窜类型了吗?
如果是Integer类型,如下初始化数组应该正确才是呀,可是如果这样初始化了,程序就错误了。
ArrayList<Integer> hexNum = new ArrayList<Integer>();
else
hexNum.add(a[i]);
改成如下就正确了:
else
hexNum.add((int)a[i] - 48);
但不晓得为什么我把字符转成int后数值就边大了,我得减掉48结果才符合?
hexNum.add(a[i]);它是个字符型,所以将你的hexNum自动转成字符型数组了。而且你的数组也不应该是Integer型的,如果是Integer的话,你程序的else部分就不对了。
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码了
那我怎么转他才不是unicode呢,才能得到正常的整数型数组?
我是写一个16进制转换10进制代码,虽然java方法可以实现,但我是新手,前几天上课有关于2进制,10进制,16进制之间的转换,自己想动手弄个计算公式,强化一下对java的认识而已,呵呵,当自己傻瓜,虽然是些没意义的工作,但玩玩也不错。
就像你那样
hexNum.add((int)a[i] - 48);就可以了
或者
hexNum.add(Integer.parseInt(String.valueOf(a[i])));
减去48就是1