我正在修改一个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}}
答案 0 :(得分:1)
为了正确地将Byte数组转换为String格式,我们必须显式创建一个String对象并为其分配Byte数组。你可以试试这个:
String str = new String(this.part1, "UTF-8"); //for UTF-8 encoding
System.out.println(str);
请注意,字节数组包含特殊编码的字符(您必须知道)。
答案 1 :(得分:0)
String
有byte[]
的构造函数,所以你可以调用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之一(尝试按您的语言环境选择)。