[英]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.