Java-字节到字节的字符串[]

Java-字节到字节的字符串[],java,string,bytearray,Java,String,Bytearray,我有一个 String b = "[B@64964f8e"; 这是我存储在字符串中的字节[]输出 现在我想把它转换回byte[] byte[] c = b.getBytes(); 但它给了我不同的字节 [B@9615a1f 我怎样才能像你一样回来[B@64964f8e? 这不是一个真正的字符串。这是字节数组的类型和地址。它只不过是一个临时参考代码,如果原始数组是GC的,你甚至不希望用真正时髦的本地方法在内存中翻滚来找回它 这不是一个真正的字符串。这是字节数组的类型和地址。它只不过是一个临时

我有一个

String b = "[B@64964f8e";
这是我存储在字符串中的字节[]输出

现在我想把它转换回byte[]

byte[] c = b.getBytes();
但它给了我不同的字节

[B@9615a1f
我怎样才能像你一样回来[B@64964f8e?

这不是一个真正的字符串。这是字节数组的类型和地址。它只不过是一个临时参考代码,如果原始数组是GC的,你甚至不希望用真正时髦的本地方法在内存中翻滚来找回它


这不是一个真正的字符串。这是字节数组的类型和地址。它只不过是一个临时参考代码,如果原始数组是GC的,你甚至不可能用真正时髦的本地方法在内存中翻滚来找回它。

我怀疑你试图做错事,这对你根本没有帮助这都是因为我希望内容相同,而不是toString()方法的结果

您不应该使用文本字符串来转换二进制数据,但可以使用
ISO-8859-1

byte[] bytes = random bytes
String text = new String(bytes, "ISO-8859-1");
byte[] bytes2 = text.getBytes("ISO-8859-1"); // gets back the same bytes.
但要回答你的问题,你可以这样做

Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");
theUnsafe.setAccessible(true);
Unsafe unsafe = (Unsafe) theUnsafe.get(null);
byte[] bytes = new byte[0];
unsafe.putInt(bytes, 1L, 0x64964f8e);
System.out.println(bytes);  
印刷品

[B@64964f8e

我怀疑您正在尝试做错误的事情,这对您毫无帮助,因为您希望内容相同,而不是toString()方法的结果

您不应该使用文本字符串来转换二进制数据,但可以使用
ISO-8859-1

byte[] bytes = random bytes
String text = new String(bytes, "ISO-8859-1");
byte[] bytes2 = text.getBytes("ISO-8859-1"); // gets back the same bytes.
但要回答你的问题,你可以这样做

Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");
theUnsafe.setAccessible(true);
Unsafe unsafe = (Unsafe) theUnsafe.get(null);
byte[] bytes = new byte[0];
unsafe.putInt(bytes, 1L, 0x64964f8e);
System.out.println(bytes);  
印刷品

[B@64964f8e
一个简单的答案是:

System.out.println(c)
打印c对象的引用表示。c的内容。(仅在对象的
toString()
方法未被覆盖的情况下)

一个简单的答案是:

System.out.println(c)
打印c对象的引用表示。c的内容。(仅在对象的
toString()
方法未被覆盖的情况下)

”[B@64964f8e“
不是您的
字节[]
的字符串编码。这是默认的
toString()
实现的结果,它告诉您类型和引用位置。可能您想改用base64编码,例如使用和:

”[B@64964f8e“
不是您的
字节[]
的字符串编码。这是默认的
toString()
实现的结果,它告诉您类型和引用位置。可能您想改用base64编码,例如使用和:


:)仔细阅读
toString()
方法是什么。尤其是
“[B@64964f8e"
string一开始几乎肯定没有实际价值。您第一次是如何将字节存储在字符串中的。请添加该代码以便更好地理解。您是否可以发布一篇带有一些示例输入和预期输出的文章以澄清问题?我想您的问题可能会在很多方面被误解。:)阅读
toString()的内容
方法是。尤其是
“[B@64964f8e"
string一开始几乎肯定没有实际价值。您第一次是如何将字节存储在字符串中的。请添加该代码以便更好地理解。您是否可以发布一篇带有一些示例输入和预期输出的文章以澄清问题?我想您的问题可能会在很多方面被误解。