繁体   English   中英

Java从字节数组获取字符串

[英]Java get string from byte array

我正在改装一个Java程序,并且其中一个处理程序接收2个字节的数组,当我使用这样的代码行打印这些数组时,\\

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));

}

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

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

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

String具有byte[]的构造函数,因此您可以调用new String(this.part1) ,或者,如果字节在平台的默认字符集中不表示字符串,请使用重载的样式并传递字符集。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM