byte []将字符串字符串转换为byte []

时间:2014-04-17 20:18:36

标签: byte

我知道这里处理得很多,但我还是无法解决我的问题: 我从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?

1 个答案:

答案 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);
相关问题