0

私はほとんどレンガの壁に到達しました。コースの 1 つのプロジェクトをどのように進めればよいかについて、アドバイスを得ることができます。これが私が仕事をしようとしているコードです:

for(i = 0; i < sendData.length; i++){
        String hex = Integer.toHexString(C[i]);
    }

    System.out.println("Encrypted Message: ");
    for(i = 0; i < sendData.length; i++){
        System.out.print(sendData[i]);
    }

ちょっとした背景として、これは RC4 暗号化用のコードです。固定バイト配列である sendData[] の位置に hex の値を入れようとしました。16 進数は文字列であるため、sendData 配列内の位置にその値を配置する方法が実際には見つかりませんでした。getBytes() 関数は 16 進値を完全に取り除くため、使用できないことはわかっています。文字列値を取得して固定バイト配列内の位置に配置する方法について誰かが考えている場合は、大歓迎です。

4

1 に答える 1

0

整数は1バイトではないことを理解する必要があるため、1バイトでループに格納するのではなく、4 bytes配列が必要になります。4 bytes以下のように整数をbyte[]に変換できます。

public static byte[] toByteArray(int value)    
{  
    ByteBuffer bb = ByteBuffer.allocate(4);  
    return bb.putInt(value).array();  
}  

public long toInteger(byte[] bytes) {
    ByteBuffer buffer = ByteBuffer.allocate(4);
    buffer.put(bytes);
    return buffer.getInt();
}
于 2012-10-14T03:03:27.713 に答える