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的值进行取反,请问如何来操作呢?

解决方案 »

  1.   

    思路是这样吗?
    我最后输出这个result时,出来的全是"??????"
    System.out.print(new String(result)); 
    不知道为什么?
      

  2.   

    那基本上就是char/char[]进行
    ^ ~ 操作了
      

  3.   

    ???
    字符串加密?
    一般都是通过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);
        }
      

  4.   

    乱码非常正常,h = 104(1101000)
    m = 109(1101101)h ^ m = 5(101)这是一个控制字符(ENQ)
    e ^ e = 0(NUL)都是控制字符
      

  5.   

    是不是应该转成byte[]进行转换?到最后的取反,是将数组里每一位挨个取反?还是将结果拼起来,整体取反?
      

  6.   

    to shine333(enihs):
    如果按char[]依次进行异或,最后都是乱码,但是我还要对最后结果进行取反,然后再转成16进制。所以不知道哪个方法正确。郁闷啊