如何将String转换为byte而不更改?

我需要一个解决方案将String转换为字节数组而不改变如下:

输入:

String s="Test"; 

输出:

 String s="Test"; byte[] b="Test"; 

我用的时候

 s.getBytes(); 

然后答复是

 "[B@428b76b8" 

但我希望得到答复

 "Test" 

您应始终确保序列化和反序列化使用相同的字符集,这会将字符映射到字节序列,反之亦然。 默认情况下,String.getBytes()和new String(bytes)使用默认字符集,该字符集可能是特定于语言环境的。

使用getBytes(Charset)重载

 byte[] bytes = s.getBytes(Charset.forName("UTF-8")); 

使用新的String(bytes,Charset)构造函数

 String andBackAgain = new String(bytes, Charset.forName("UTF-8")); 

Java 7还添加了java.nio.charset.StandardCharsets类,因此您不再需要使用狡猾的String常量

 byte[] bytes = s.getBytes(StandardCharsets.UTF_8); String andBackAgain = new String(bytes, StandardCharsets.UTF_8); 

你可以恢复使用

String originalString = new String(b, "UTF-8");

这应该让你回到原来的字符串。 您不希望直接打印出字节。

您可以尝试以下代码段 –

 String string = "Sample String"; byte[] byteArray = string.getBytes(); 

一般情况下,除非您要序列化或传输数据,否则可能不是您想要做的事情。 此外,Java字符串是UTF-16而不是UTF-8,这更像是您期望的。 如果你真的想要/需要这个,那么这应该工作:

 String str = "Test"; byte[] raw = str.getBytes(new Charset("UTF-8", null));