请大家帮帮忙;
       
                        String str="中国广东,856077989"
请问怎么对这个字符串用0x65逐个异或形成二进制码,用16进制字符串进行输出。

解决方案 »

  1.   


    String str="中国广东,856077989";
            String outputStr="";
            for(int i=0;i<str.length();i++)
            {
             outputStr+=Integer.toHexString(((int)str.charAt(i)) ^ 0x65);
            }
            System.out.println(outputStr);
      

  2.   

    非常感谢,但是对于异或后的输出的16进制怎么还原呢,我运行楼上的大侠的结果是‘4e4856985e1a4e79495d50535552525c5d5c’,但是我怎么把这个还原成"中国广东,856077989"?
      

  3.   


    String str="中国广东,856077989";
            String outputStr="";
            String orgStr="";
            for(int i=0;i<str.length();i++)
            {
                outputStr+=(Integer.toHexString(((int)str.charAt(i)) ^ 0x65).length()<4?"00"+Integer.toHexString(((int)str.charAt(i)) ^ 0x65):Integer.toHexString(((int)str.charAt(i)) ^ 0x65));
            }
            System.out.println(outputStr);//16进制输出        for(int i=0;i<outputStr.length();i=i+4)
            {
             orgStr+=String.valueOf((char)(Integer.parseInt(outputStr.substring(i, i+4),16) ^ 0x65));
            }
            System.out.println(orgStr);//还原