我有一个字符串,其中包含字节数组的String值,例如像[B @ 42031498]
我想将String
内容检索为byte[]
?我怎么能这样做?
PS:使用String.getBytes()
方法转换字符串不起作用。它转换字符串但不会将值作为字节数组给出。它有效like this。
如果不可能有一种方法可以从java中的Object获取byte [](并且始终没有转换)
答案 0 :(得分:1)
使用String.getBytes()方法转换字符串不起作用。它转换字符串,但不会将值作为字节数组。
你有两个问题:
Arrays.toString()
,否则调用数组本身的.toString()
方法; .getBytes(StandardCharsets.UTF_8)
在所有环境中获得相同的结果。以相同的方式,应使用正确的编码来完成从字节数组构建字符串:new String(array, StandardCharsets.UTF_8)
。
答案 1 :(得分:0)
如下所示迭代字节数组,您将获得字节值:
for (byte b : bytes) {
System.out.println(b);
}
由于Object类toString()方法而得到的输出B@42031498
。
public String toString()
{
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
答案 2 :(得分:0)
你做了什么:
byte[] array = ....
String result = array.toString();
你(可能)想要什么:
String result = new String(array, "UTF-8");
答案 3 :(得分:0)
如果[B@42031498
已经保存到String中,则无法将其恢复到原始字节数组。请看以下示例:
String str = "[B@42031498";
byte[] ba = str.getBytes();
String s = new String(ba);
System.out.println(s);
这将输出[B@42031498