我知道这里处理得很多,但我还是无法解决我的问题: 我从Parceble对象中读取字节并将它们保存在byte []中,然后我将其解析 他们回到一个对象,它工作得很好。但我必须将字节作为字符串发送,所以我 必须将字节转换为字符串,然后返回。
我认为它会起作用如下:
byte[] bytes = p1.marshall(); //get my object as bytes
String str = bytes.toString();
byte[] someBytes = str.getBytes();
但它不起作用,当我" p2.unmarshall(someBytes,0,someBytes.length);" with someBytes,但是当我p2.unmarshall(bytes,0,bytes.length);有字节,它工作正常。我怎样才能将字节转换为String?
答案 0 :(得分:3)
你在这里遇到了三个问题:
toString()
上致电byte[]
,这只会给您"[B@15db9742"
getBytes()
,这几乎总是一个错误。在这种情况下,您应该只使用base64 - 在将任意二进制数据转换为文本时,这几乎总是正确的做法。 (如果您实际上是在尝试解码编码文本,则应使用new String(bytes, charset)
,但这不是这种情况。)
所以,使用android.util.Base64
:
String str = Base64.encodeToString(bytes, Base64.DEFAULT);
byte[] someBytes = Base64.decode(str, Base64.DEFAULT);