ElDoggo
ElDoggo

Reputation: 33

Java get string from byte array

I am modding a java program and in it a handler receives 2 byte arrays When I print those arrays using a line of code like this\

java.util.Arrays.toString(this.part1))

I get an output like this

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

I know these byte arrays contain a string. How might I get that string from them? Here is the code

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

}

Upvotes: 1

Views: 2493

Answers (3)

actually to convert bytes to String you need encoding name. You need to change UTF-8 to correct encoding name in first answer to avoid wrong output, try UTF-16 or one of https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html (try to choose by your locale).

Upvotes: 0

1218985
1218985

Reputation: 8022

In order to convert Byte array into String format correctly, we have to explicitly create a String object and assign the Byte array to it. You can try this:

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

Please note that the byte array contains characters in a special encoding (that you must know).

Upvotes: 1

Mureinik
Mureinik

Reputation: 311478

String has a constructor from byte[], so you could just call new String(this.part1), or, if the bytes do not represent a string in the platform's default charster, use the overloaded flavor and pass the charset too.

Upvotes: 0

Related Questions