Sonhja
Sonhja

Reputation: 8458

Convert a String of bytes into ASCII

I'm connecting to a bluetooth device that answers to some parameters I send it, but as a response I read from a socket like this:

String data = dIn.readLine();

Where dIn is a:

DataInputStream dIn = new DataInputStream(socket.getInputStream());

The thing is that I receive the data, but it's a byte array read on a string. How can I convert that string that contains my byte array into a String with the correct hexadecimal values?

Thank you in advance.

Upvotes: 2

Views: 13155

Answers (3)

Jon Skeet
Jon Skeet

Reputation: 1503429

It's unclear whether you're trying to actually decode a text string which you've got as a byte array, or whether you want a text representation (in hex) of arbitrary binary data. For the first you'd use:

String text = new String(data, 0, data.length, "ASCII");

For the second you could use something like Apache Commons Codec:

String text = Hex.encodeHexString(data);

Upvotes: 7

Graham Borland
Graham Borland

Reputation: 60711

Wrap the DataInputStream in an InputStreamReader.

DataInputStream.readLine() is deprecated.

Upvotes: 0

Nicolas
Nicolas

Reputation: 1116

Have a look at String's Format function. If you specify the format as "%X", it will be returned as a hex string

You will have to iterate through the byte array to convert each, as the above function accepts only primitive numeric types.

Upvotes: 0

Related Questions