因此我有字符串的字节值。例如通过:
String str="Test String";
System.out.println(str.getBytes());
给了我:
[B@1339a0dc
我可以用它来初始化一个字节数组,如:
byte[] bytes=new bytes("[B@1339a0dc");
还是什么?
答案 0 :(得分:2)
getBytes
返回byte
数组。所以你可以这样做:
byte[] bytes = str.getBytes();
直接
[B@1339a0dc
只是一个表示为String的对象引用,它不是实际的字节数组
答案 1 :(得分:1)
没有。这是类名([B
是byte[]
),哈希码(1339a0dc
是十六进制的哈希码)。哈希不能被逆转,因为它们不是bijective。
为什么打印这个?因为您使用的是隐式toString()
。这样:
System.out.println(str.getBytes());
由编译器翻译为:
System.out.println(str.getBytes().toString());
因为System.out.println()
以String
为参数,所以在这里进行隐式转换。
所以你正在使用默认的Object#toString()
实现,它的工作原理如我之前所解释的那样(更多细节in the documentation)