【发布时间】:2021-05-14 11:57:33
【问题描述】:
我正在开发一个 Java 项目。 我使用密码进行编码和解码。 密码返回我一个字节数组。 由于某些原因,我必须在 String 中发送这个字节数组 您对如何取回相同的字节数组有任何想法吗?
例如,如果我有字符串:
"[B@5024d44"
我想转换为byte[],但我希望byte[] 等于[B@5024d44。有可能吗?
感谢您的回答。
【问题讨论】:
我正在开发一个 Java 项目。 我使用密码进行编码和解码。 密码返回我一个字节数组。 由于某些原因,我必须在 String 中发送这个字节数组 您对如何取回相同的字节数组有任何想法吗?
例如,如果我有字符串:
"[B@5024d44"
我想转换为byte[],但我希望byte[] 等于[B@5024d44。有可能吗?
感谢您的回答。
【问题讨论】:
[B@5024d44 告诉您您有一个字节数组,并告诉您什么都没有关于其中的内容。你不能将它转换回任何有意义的东西。
要将字节数组可逆地转换为String,请使用Base64。
【讨论】:
如果您有一个字符串[B@5024d44,您可以将其转换为byte[] 数组,然后将该数组转换回字符串。这两个字符串相等,但数组不等于字符串,数组的内容也不等于字符串:
String str = "[B@5024d44";
byte[] arr = str.getBytes(StandardCharsets.UTF_8);
String str1 = new String(arr, StandardCharsets.UTF_8);
// strings are equal
System.out.println(str.equals(str1)); // true
// string representation of the array
System.out.println(arr); // [B@5451c3a8
// contents of the array
System.out.println(Arrays.toString(arr));
// [91, 66, 64, 53, 48, 50, 52, 100, 52, 52]
【讨论】: