一个关于Java字符转换问题
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="F648E81AB0";
String str="";
int XorKey[] = {0xB2, 0x09, 0xAA, 0x55, 0x93, 0x6D, 0x84, 0x47};
// int XorKey[] = {178, 9, 170, 85, 147, 109, 132, 71};
int a=(s.length())/2;
int j=0;
for(int i=1;i<=a;i++){
str = str + s.charAt( Integer.parseInt("0x"+s.substring(i * 2 - 2,2),16) ^ XorKey[j]);
j = (j + 1) % 8;
}
System.out.println(str);
}
我自己写的一个解密的方法、把字符串S的值解密出来,但是一直过不去、试了很多种很方法、都没办法。
大概原理就是把字符串循环一个一个解密,首先取2字符的16进制对应的10进制值异或获得另外一个值的10进制之后取对应值的ASCII码、最后解密出来。。对JAVA了解尚且、求大神解答,感谢
------解决方案--------------------str = str + s.charAt( Integer.parseInt("0x"+s.substring(i * 2 - 2,2),16) ^ XorKey[j]);
这个好像应该改成这样,不知道对不对
str = str + s.charAt( Integer.parseInt(s.substring(i * 2 - 2,2),16) ^ XorKey[j]);
不过这样还是有错,s.charAt(index)的下标越界了,
------解决方案--------------------这样试试看:
public class Jiami {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "F648E81AB0";
String str = "";
int XorKey[] = { 0xB2, 0x09, 0xAA, 0x55, 0x93, 0x6D, 0x84, 0x47 };