2011-04-28 172 views
5

我有一些byte []數組變量需要轉換爲字符串緩衝區。如何將字節[]數組轉換爲字符串緩衝區

是否有這種類型的轉換方法?

感謝

謝謝大家的responses..However我沒有讓自己清楚.... 我使用一些字節[]數組預先定義爲公共靜態「下」之類的聲明 爲我的java程序。這些「領域」在過程的「生命」期間被重複使用。 當程序發佈狀態消息(寫入文件)時,我定義了一個用於格式化狀態消息的字符串緩衝區 (mesg_data)。 所以隨着程序的執行 我試圖MSG2 =字符串(byte_array2) 我得到一個編譯錯誤: 找不到符號 符號:方法字符串(字節[]) 位置:類APPC_LU62.java.LU62XnsCvr convrsID =字符串( conversation_ID);

例如:

public class LU62XnsCvr extends Object 
      . 
      . 
static String convrsID ; 
static byte[] conversation_ID = new byte[8] ; 

因此,我不能使用「動態」,因爲相同的變量在多個occurances使用 字符串變量的定義。

我希望我自己清楚 萬分感謝

蓋伊

+0

指定正確的字符編碼(字符集),你需要的字節字符串表示?或每個字節代表一個字符? – Dave 2011-04-28 18:33:56

+0

這麼多重複的答案... – 2011-04-28 19:06:26

回答

6
String s = new String(myByteArray, "UTF-8"); 
StringBuilder sb = new StringBuilder(s); 
+1

這是爲什麼downvoted?由於缺少字符編碼? – helpermethod 2011-04-29 16:08:19

+2

是的,你應該指定字符編碼。如果你想要一個字節映射到一個字符,那麼使用「US-ASCII」編碼。如果您不指定編碼,則可能會在不同的環境中獲得不同的結果。在任何情況下,指定「US-ASCII」說明清楚。 – AgilePro 2013-02-15 00:59:12

3

你可以把它轉化爲一個String直接

byte[] bytearray 
.... 
String mystring = new String(bytearray) 

,然後轉換爲StringBuffer

StringBuffer buffer = new StringBuffer(mystring) 
5

有一construc TOR的是一個字節數組和編碼:

byte[] bytes = new byte[200]; 
//... 

String s = new String(bytes, "UTF-8"); 

爲了翻譯字節需要指定編碼性狀:方案,通過該值0-255(通常爲3的長度1,2或)序列(即是:字節序列)映射到字符。 UTF-8可能是默認情況下最好的選擇。

0

這完全取決於字符編碼,但你想:

String value = new String(bytes, "US-ASCII"); 

這將爲US-ASCII值工作。

用於其他有效字符編碼(例如,UTF-8)

1

你可以使用

str = new String(bytes) 

通過thewhat上面的代碼不會是創建一個Java字符串參見Charset(即UTF-16)使用默認的平臺字符編碼。

如果字節數組是從在平臺默認字符編碼中編碼的字符串創建的,則這將工作良好。

如果沒有你需要的

String str = new String (byte [] bytes, Charset charset) 
相關問題