1

我想从字符串值中获取字节(用于加密/解密目的),为此我使用了 getBytes() 方法,但是每次调用 getBytes() 方法时,它每次都会返回一个新的数组字节。我想要一个特定字符串的唯一字节数组。如何 ?另外我想将该信息(字符串或字节)存储在一个文件中,并且我想以字节的形式取回这些信息。

4

2 回答 2

2

getBytes()不会每次都返回 new 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
    }

由于 Array 的内容在这里是相等的,它不应该对整个 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 回答