String.getBytes()为多次执行返回不同的值?

public static void main(String[] args) { try { String name = "i love my country"; byte[] sigToVerify = name.getBytes(); System.out.println("file data:" + sigToVerify); String name1 = "data"; byte[] sigToVerify1 = name1.getBytes(); System.out.println("file data1:" + sigToVerify1); } } 

我试图执行上面的程序,但getBytes()为我提供了相同String不同值。 有没有办法在给定字符串执行多次时获取相同的字节?

 System.out.println("file data:" + sigToVerify); 

在这里,您不打印String的值。 正如owlstead在注释中正确指出的那样,将在字节数组sigToVerify上调用Object.toString()方法。 导致此格式的输出:

 getClass().getName() + '@' + Integer.toHexString(hashCode()) 

如果要打印数组中的每个元素,则必须循环遍历它。

 byte[] bytes = "i love my country".getBytes(); for(byte b : bytes) { System.out.println("byte = " + b); } 

甚至更简单,使用Arrays.toString()方法:

 System.out.println(Arrays.toString(bytes)); 

尝试打印出字节数组的内容,而不是变量的toString()结果

 for(byte b : sigToVerify) System.out.print(b +"\t"); 

如果打印的字节是相同的,那么你很高兴。