2015-10-18 124 views
1

我改裝的Java程序並在它的處理程序接收2個字節數組 當我打印使用的代碼行這樣\爪哇GET字符串

java.util.Arrays.toString(this.part1)) 

這些陣列我得到這樣的輸出這

[43, 83, 123, 97, 104, -10, -4, 124, -113, -56, 118, -23, -25, -13, -9, -85, 58, -66, -34, 38, -55, -28, -40, 125, 22, -83, -72, -93, 73, -117, -59, 72, 105, -17, 3, -53, 121, -21, -19, 103, 101, -71, 54, 37... 

我知道這些字節數組包含一個字符串。我怎麼能從他們那裏得到這個字符串? 下面是代碼

public void readPacketData(PacketBuffer data) throws IOException 
{ 
    this.field_149302_a = data.readByteArray(); 
    this.field_149301_b = data.readByteArray(); 
    String packet1 = (java.util.Arrays.toString(this.field_149302_a)); 
    String packet2 = (java.util.Arrays.toString(this.field_149301_b)); 

} 
+0

[Java Byte Array to String to Byte Array](http://stackoverflow.com/questions/6684665/java-byte-array-to-string-to-byte-array) – thokuest

+0

請提供代碼片段 –

回答

1

爲了Byte數組正確地轉換成字符串格式,我們必須明確地創建一個String對象和字節數組分配給它。你可以試試這個:

String str = new String(this.part1, "UTF-8"); //for UTF-8 encoding 
System.out.println(str); 

請注意,字節數組包含特殊編碼(你必須知道)中的字符。

+0

+ W?CP「AA±ÊC³「菊Ó¹vÈÚ\t DX ElDoggo

+0

這是由於某種原因輸出的 – ElDoggo

0

String具有byte[]一個構造函數,所以你可以只調用new String(this.part1),或者,如果字節不表示在平臺的默認charster一個字符串,使用重載的味道,並通過字符集了。