1

文字列値からバイトを取得したい(暗号化/復号化の目的で)、その目的でgetBytes()メソッドを使用しましたが、getBytes()メソッドを呼び出すたびに、毎回新しい配列のバイトが返されます。特定の文字列に一意の配列バイトが必要です。どのように ?また、その情報(文字列またはバイト)をファイルに保存し、この情報をバイト形式で取得したいと思います。

4

2 に答える 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 に答える