2015-10-18 96 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一个字符串,使用重载的味道,并通过字符集了。