2014-04-17 47 views
0

我知道这是在这里办理了很多,但我想不出解决我的问题尚未: 我从Parceble对象读取的字节,并将它们保存在一个byte [],然后我unmurshall 他们回到对象的它工作一切正常。但我需要发送的字节作为一个字符串,所以我 必须将字节转换为字符串,然后返回。字节[]到字符串的字符串为byte []

我认为这会工作如下:

byte[] bytes = p1.marshall(); //get my object as bytes 
String str = bytes.toString(); 
byte[] someBytes = str.getBytes(); 

但它不工作,当我 “p2.unmarshall(someBytes,0,someBytes.length);”与someBytes,但当我p2.unmarshall(bytes,0,bytes.length);与字节,它工作正常。我怎样才能将字节转换为字符串正确?

+0

我想这是在Java中? –

+0

我们如何能够在代码,我们看不到有何评论? –

回答

3

你有三个问题在这里:

  • 你打电话toString()byte[],这是刚刚要给你像"[[email protected]"
  • 你假设你可以只是转换一个字节数组成文本,没有具体的转换,不会丢失数据
  • 你打电话getBytes()没有指定字符编码,它几乎总是错误的。

在这种情况下,你应该使用的base64 - 这几乎总是转换任意二进制数据文本时做正确的事情。 (如果你确实想编码解码的文字,你应该使用new String(bytes, charset),但这里并非如此。)

因此,使用android.util.Base64

String str = Base64.encodeToString(bytes, Base64.DEFAULT); 
byte[] someBytes = Base64.decode(str, Base64.DEFAULT); 
+0

非常感谢! – user1128353