The Hiary
The Hiary

Reputation: 109

Java String to array of bytes wrong conversion

I have a client server Java code and the client is reading in a string "input" and it should then decrypt it, the decryption function needs an array of bytes, so I need to convert the string to array of bytes, which is done using "getBytes()" function, however it seems that this function is modifying the String! How can I convert the string into an array of bytes without changing its content.

   String input = inputline.substring(66, inputline.length());
   System.out.println("Read message +"+input+"+");
   byte[] bx = input.getBytes(Charset.forName("UTF-8"));
   System.out.println("Read message +"+bx.toString()+"+");
   System.out.println("Read message +"+bx+"+");

the output of the code snippet is as follows:

Read message +[B@161cd475+

Read message +[B@4e25154f+

Read message +[B@4e25154f+

Upvotes: 0

Views: 660

Answers (2)

Alvin Bunk
Alvin Bunk

Reputation: 7764

This should work for you. I needed to make a String object from the byte array...

String inputline = "[B@161cd475";
String input = inputline.substring(0, inputline.length());
System.out.println("Read message +"+input+"+");
byte[] bx = input.getBytes();

// Convert to String object
String tmp = new String(bx);
// Print statements.
System.out.println("Read message +" + tmp + "+");

Upvotes: 0

Nagnus6192
Nagnus6192

Reputation: 11

Try writing a for loop to print out the results. I believe Java is spitting out a random memory value for your output.

(int i = 0; s <= bx.length;i++)
{
 System.out.println("Read message +" + bx[i].toString() + "+");
 System.out.println("Read message +" + bx + "+");
}

Not sure if my for loop is correct, but it may give you something to work with. I hope this helps.

Upvotes: 1

Related Questions