|
发表于 2014-10-19 20:29:34
|
显示全部楼层
这位同学你搞错的异或运算了,因为这里是字符的1,它ASCII码是49,所以正确的结果应该是20000与49相异或 = 19985,而不是数字1和20000异或=20001,同理'2'、'3',都是一样结果是19986,19987,你可以把array改成数字结果一定和你想的一样
- import java.util.Scanner;
- public class Example {
-
- public static void main(String[] args){
- Scanner scan = new Scanner(System.in);
- System.out.println("请输入一个英文字符串或解谜字符串");
- String password = scan.nextLine();
- char array[] = password.toCharArray();
- for(int i=0; i<array.length; i++){
- array[i] = (char)(array[i] ^ 20000);
- //这是的异或运算你想错了,因为这里是字符的1,它ASCII码是49,所以正确的结果应该是20000与49相异或 = 19985
- //而不是数字1和20000异或=20001
- //同理'2'、'3',都是一样结果是19986,19987
- }
- System.out.println("加密或解谜结果如下:");
- System.out.println(new String(array));
- System.out.println("丑 = " + (int)'丑');
- System.out.println((char)20001);
-
- }
- // 100111000100000 = 20000
- // 000000000000001 = 1
- // 100111000100001 = 20001 = '両' 理论结果
- // 100111000010001 = 19985 = '丑' 实际结果
- }
复制代码 |
|