2014-04-17 46 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