How to convert byte array to string and vice versa?
Solution 1:
Your byte array must have some encoding. The encoding cannot be ASCII if you've got negative values. Once you figure that out, you can convert a set of bytes to a String using:
byte[] bytes = {...}
String str = new String(bytes, StandardCharsets.UTF_8); // for UTF-8 encoding
There are a bunch of encodings you can use, look at the supported encodings in the Oracle javadocs.
Solution 2:
The "proper conversion" between byte[]
and String
is to explicitly state the encoding you want to use. If you start with a byte[]
and it does not in fact contain text data, there is no "proper conversion". String
s are for text, byte[]
is for binary data, and the only really sensible thing to do is to avoid converting between them unless you absolutely have to.
If you really must use a String
to hold binary data then the safest way is to use Base64 encoding.