java android中的XOR掩码

时间:2013-01-20 16:48:31

标签: java android eclipse xor

用户输入代码字和文本进行加密,程序应该将XOR掩码 - 代码放在文本上 - 然后转回正常状态,但它只是戴上掩码,不要回到正常状态,为什么?

public void onClick(View arg0) {
        code = etCode.getText().toString();
        text = etText.getText().toString(); 

        while(code.length()<text.length()){
            code+=code;
        }
        char[] Ccode = code.toCharArray();
        char[] Ctext = text.toCharArray();

        for(i=0;i<Ctext.length;i++){
            Ctext[i]^=Ccode[i];
        }

        rezult=Ctext.toString();

        for(i=0;i<Ctext.length;i++){
            Ctext[i]^=Ccode[i];
        }
        rezult+="\n";
        rezult+=Ctext.toString();
        tvMain.setText(rezult);
        }
    });

如果我输入code : code , text : text 它显示:

[C@40527808
[C@40527808 

3 个答案:

答案 0 :(得分:2)

输出数组的地址。你想要的内容。 数组没有用toString() mwthod。

变化

rezult=Ctext.toString();

rezult=new String(Ctext);

同样适用于

rezult+=Ctext.toString();

=&GT;

rezult+=new String(Ctext);

答案 1 :(得分:0)

在Java中,对数组的默认toString()操作是转换为内部标识符,这就是您所看到的。尝试使用:

rezult = new String(Ctext);
...
rezult += new String(Ctext);

或者,取决于你想要显示的内容(因为我不清楚Ctext总是包含可显示的字符):

rezult = Arrays.toString(Ctext);
...
rezult += Arrays.toString(Ctext);

这将为您提供逗号分隔的字符值数组,用方括号括起来。

答案 2 :(得分:0)

您不能使用toString()将char数组转换为String。

使用tvMain.setText(new String(Ctext));