文字列値からバイトを取得したい(暗号化/復号化の目的で)、その目的でgetBytes()メソッドを使用しましたが、getBytes()メソッドを呼び出すたびに、毎回新しい配列のバイトが返されます。特定の文字列に一意の配列バイトが必要です。どのように ?また、その情報(文字列またはバイト)をファイルに保存し、この情報をバイト形式で取得したいと思います。
質問する
499 次
2 に答える
2
getBytes()
毎回新しいbyte[]を返すわけではありませんが、内容は同じです。以下のサンプルを確認してください
byte[] b1 = "abc".getBytes();
byte[] b2 = "abc".getBytes();
if(b1 == b2)
{
System.out.println("Equal Not possible");//Not this
}
if(Arrays.equals(b1, b2))
{
System.out.println("Equal possible");//Gets printed
}
ここでは配列の内容が等しいため、Javaの世界全体で考えられるあらゆる種類の暗号化/記述アルゴリズムに違いはありません。
于 2012-09-26T15:22:59.547 に答える
0
Stringが毎回同じバイト配列を提供した場合、メソッドのコントラクトに違反します。理由は次のとおりです。
String a = "test";
byte[] abytes1 = a.getBytes();
abytes1[0] = 0; // we are modifying the byte array.
// There is no way to prevent this!
// some other caller later on does this:
byte[] abytes2 = a.getBytes();
abytes2
がと同じ配列の場合abytes1
、最初のエントリは0になり、文字列の値と一致しません。String.getBytes()は、呼び出し元が配列を変更することを決定した場合に備えて、毎回新しい配列を作成する必要があります。
于 2012-09-26T15:27:17.050 に答える