Java从字节数组中获取字符串

时间:2015-10-18 17:13:14

标签: java string byte bytearray

我正在修改一个java程序,其中一个处理程序接收2个字节的数组 当我使用像\

这样的代码行打印这些数组时
[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));

}

我知道这些字节数组包含一个字符串。我怎么能从他们那里得到那个字符串? 这是代码

{{1}}

3 个答案:

答案 0 :(得分:1)

为了正确地将Byte数组转换为String格式,我们必须显式创建一个String对象并为其分配Byte数组。你可以试试这个:

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

请注意,字节数组包含特殊编码的字符(您必须知道)。

答案 1 :(得分:0)

Stringbyte[]的构造函数,所以你可以调用new String(this.part1),或者,如果字节不代表平台默认字符集中的字符串,则使用重载的flavor和也通过了charset。

答案 2 :(得分:0)

实际上要将字节转换为String,您需要编码名称。您需要在第一个答案中将UTF-8更改为正确的编码名称以避免输出错误,请尝试使用UTF-16或https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html之一(尝试按您的语言环境选择)。