2017-05-20 8 views
1

java.lang.Stringをbyte []で変換できない理由を理解できません。行でJavaコンパイラはbyte []がStringであると考えます

byte[] decData = io.decrypt(fileData, new Random(fileData.length)); 

私のコンパイラは言った:java.lang.Stringでは、バイト[]

に変換することはできませんが、私はこのようなFILEDATAを初期化:

byte[] fileData = new byte[fIn.available()]; 

そして、 io.decryptは次のように定義されます。

public static String decrypt(byte[] data, Random key) { 
    byte[] byteKey = new byte[data.length]; 
    key.nextBytes(byteKey); 
    return decrypt(data, byteKey); 
} 

ランダムがjava.util.Randomの場合

なぜ私が間違っていたのか分かりません。ところで

:私は

シンプルなXORエン/デcrypterを作成しようとしていると、これは完全なコードです:

Boolean decrypt = praseBoolean(Greenfoot.ask("decrypt? (y/n)")); 

    //Random rand = new Random(); 

    if(!decrypt) { 
     File folder = new File("decrypted"); 
     File[] toEncrypt = folder.listFiles(); 
     //Long[] keys = 
     for(File file: toEncrypt) { 
      FileInputStream fIn = new FileInputStream(file); 
      byte[] fileData = new byte[fIn.available()]; 
      fIn.read(fileData); 
      byte[] encData = io.encrypt(fileData, new Random(fileData.length)); 
      io.saveEncryptedFile(encData, "encrypted/"+file.getName()); 
     } 
    } 

    if(decrypt) { 
     File folder = new File("encrypted"); 
     File[] toEncrypt = folder.listFiles(); 
     //Long[] keys = 
     for(File file: toEncrypt) { 
      FileInputStream fIn = new FileInputStream(file); 
      byte[] fileData = new byte[fIn.available()]; 
      fIn.read(fileData); 
      byte[] decData = io.decrypt(fileData, new Random(fileData.length)); 
      io.saveEncryptedFile(encData, "decrypted/"+file.getName()); 
     } 
    } 
+1

なぜ 'String'を' byte [] 'に格納しようとしていますか?あなたの 'decrypt'戻り値の型を確認してください... – Li357

+1

私はそれについて忘れてしまった。私のコンパイラはそれほど良いものではなく、議論を選んだので、困惑した人たちを見ました。 – fejfo

+0

'String'は(論理的に)' byte [] 'ではないことに注意してください。これは' char [] 'のようなものです。チャーとバイトは同じものではありません。 –

答えて

2

io.decrypt戻りStringが、あなたがbyte[]に結果を代入。だから、

byte[] decData = io.decrypt(fileData, new Random(fileData.length)).getBytes(); 

または

String decData = io.decrypt(fileData, new Random(fileData.length)); 
+0

ありがとう、私は今私は愚かな感じを見た以上 – fejfo

1

decryptString返すに変更していますが、byte[] decDataに割り当てしようとしています。ただ、StringにそれをASSING、あなたはOKでなければなりません:

String decData = io.decrypt(fileData, new Random(fileData.length)); 
+0

今、私は愚かな気がしていることを見て、私は愚かだ – fejfo

1

あなたの復号化方法はStringを返します。バイト配列を取得する場合は、メソッドの結果にstring.getBytes()を使用するか、最初にバイト配列を返します。

+0

今、私は愚かな気がする – fejfo

関連する問題