我有以下字节数组:
byte[] bytes = new byte[] { (byte) -61, (byte) -61};
首先我使用以下行将其转换为String:
strResult = new String(bytes, "ISO_8859_1");
然后我使用以下代码将其转换回字节数组:
byte[] myBytes = strResult.getBytes();
myBytes的内容是[-61,-125,-61,-125]
我测试了“US-ASCII”和“UTF-8”字符集。每一个都返回一个不同的字符串,它们都不是[-61,-61]。
如何创建包含[-61,-61]字节的字符串?
我的意思是当我使用getBytes()时我想要一个字符串;它返回[-61,-61]个字节。我该如何创建它?
答案 0 :(得分:0)
您应该使用相同的编码再次转换回来:
byte[] myBytes = strResult.getBytes("ISO_8859_1");
基本上字符串不维护最初用于创建它的编码记录 - 它始终只是一系列UTF-16代码单元。如果未指定将字符串转换为字节数组时要使用的编码,则使用平台默认编码。
请注意,如果您尝试将任意二进制数据编码为文本(即您没有解码某些特定编码中真正文本的内容),那么您不应该使用这些方法全部 - 您应该使用Base64
安全地进行编码和解码。