字符串中的唯一字节数

时间:2012-09-26 15:12:22

标签: java

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

2 个答案:

答案 0 :(得分: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
    }

由于Array的内容相同,所以在整个Java世界中任何可能的加密/描述算法都不应有任何区别!

答案 1 :(得分: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();

如果abytes2abytes1的数组相同,则第一个条目的值为0,并且不匹配字符串的值。每次调用者决定修改数组时,String.getBytes()必须创建一个新数组。