JAVA中对两个字符串进行异或,怎么来处理?是不是:先转为char[],再对两个字符串依次异或?例如:
String s1 = "hellome";
String s2 = "mehello"; //两个字符串长度相等
char[] a1 = s1.toCharArray();
char[] a2 = s2.toCharArray();
char[] result = new char[a1.length];
for(int i=0;i<a1.length;i++){
result[i]=(char)(a1[i]^a2[i]);
}
然后还要对result的值进行取反,请问如何来操作呢?
String s1 = "hellome";
String s2 = "mehello"; //两个字符串长度相等
char[] a1 = s1.toCharArray();
char[] a2 = s2.toCharArray();
char[] result = new char[a1.length];
for(int i=0;i<a1.length;i++){
result[i]=(char)(a1[i]^a2[i]);
}
然后还要对result的值进行取反,请问如何来操作呢?
我最后输出这个result时,出来的全是"??????"
System.out.print(new String(result));
不知道为什么?
^ ~ 操作了
字符串加密?
一般都是通过byte做吧
String s1="abcdefg";
String s2="hijklmn";
byte buf1[]=s1.getBytes();
byte buf2[]=s2.getBytes();
for(int i=0;i<s1.length();i++){
int b=(int)buf1[i]^(int)buf2[i];
System.out.println(b);
}
m = 109(1101101)h ^ m = 5(101)这是一个控制字符(ENQ)
e ^ e = 0(NUL)都是控制字符
如果按char[]依次进行异或,最后都是乱码,但是我还要对最后结果进行取反,然后再转成16进制。所以不知道哪个方法正确。郁闷啊