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