2013-01-20 72 views
3

用戶輸入代碼字和文本進行加密,程序應該將XOR掩碼 - 代碼放在文本上 - 然後回到正常狀態,但它只是放在掩碼上,不會回到正常狀態,爲什麼?在java中的XOR掩碼android

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 它表明:

[[email protected] 
[[email protected] 

回答

0

在Java中,對數組的默認toString()操作轉換爲內部標識,這是你所看到的。嘗試使用:

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

,或者取決於你想要顯示(因爲它不是清楚,我認爲Ctext總是包含顯示字符)內容:

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

這會給你一個逗號分隔陣列字符值,用方括號包圍。

0

您不能使用toString()將字符數組轉換爲字符串。

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

2

你輸出數組的地址。你想要的內容。 數組沒有用toString()方法。

變化

rezult=Ctext.toString(); 

rezult=new String(Ctext); 

相同爲

rezult+=Ctext.toString(); 

=>

rezult+=new String(Ctext);