Android 如何使用字节数组创建所需的字符串?

Android 如何使用字节数组创建所需的字符串?,android,string,bytearray,Android,String,Bytearray,我有以下字节数组: byte[] bytes = new byte[] { (byte) -61, (byte) -61}; 首先,我使用以下行将其转换为字符串: strResult = new String(bytes, "ISO_8859_1"); 然后使用以下代码将其转换回字节数组: byte[] myBytes = strResult.getBytes(); myBytes的内容是[-61,-125,-61,-125] 我已经测试了“US-ASCII”和“UTF-8”字符集。每一个

我有以下字节数组:

byte[] bytes = new byte[] { (byte) -61, (byte) -61};
首先,我使用以下行将其转换为字符串:

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]个字节。如何创建它?

您应该使用相同的编码重新转换:

byte[] myBytes = strResult.getBytes("ISO_8859_1");
基本上,该字符串不维护最初用于创建它的编码的任何记录-它始终只是一个UTF-16代码单元序列。如果在将字符串转换为字节数组时未指定要使用的编码,则将使用平台默认编码


请注意,如果您试图将任意二进制数据编码为文本(即,您没有在特定编码中解码真正的文本),那么您根本不应该使用这些方法-您应该使用这些方法来安全地编码和解码。

否我希望字符串包含[-61,-61]字节。@breceivemail:字符串包含字符-不包含字节。理解这一点非常重要,不要试图使用字符串来表示二进制数据。现在还不清楚你想要达到什么目的——你是从实际上不代表文本的字节开始的(例如,它们是图像的数据)?或者是(比如)文本文件的内容?当我使用getBytes()时,我想要一个字符串;它返回[-61,-61]个字节。如何创建它?谢谢,@breceivemail:这取决于您的默认编码-如果是UTF-8,则没有此类字符串,因为这不是有效的UTF-8编码序列。请再次解释更广泛的背景。你到底想实现什么?我测试了默认的UTF-16,发现它不是默认的字符集。