Explain Codes LogoExplain Codes Logo

How to convert byte array to string and vice versa?

java
byte-array
string-conversion
utf-8
Anton ShumikhinbyAnton ShumikhinยทAug 9, 2024
โšกTLDR

Convert byte array to String:

byte[] bytes = {72, 101, 108, 108, 111}; // "Hello" or as they say, "Hi there, computer world!" String str = new String(bytes, StandardCharsets.UTF_8);

String to byte array:

String str = "Hello"; byte[] bytes = str.getBytes(StandardCharsets.UTF_8);

Using StandardCharsets.UTF_8 avoids UnsupportedEncodingException, because everyone dislikes unexpected errors, right? ๐Ÿ˜‰

Why encoding matters

In essence, encoding determines how characters are represented as bytes, just like secret agents disguised as ordinary citizens. UTF-8 is the most common encoding and is supported by Java's StandardCharsets. Using the wrong encoding, though, could be like mistaking a friend for a foe - disastrous!

Negativity in bytes

Java's Byte datatype is signed, implying it can hold negative values. Negative bytes may not converge to the expected characters in a String. Like in life, you always want to avoid negativity whenever possible!

Default encoding: a double-edged sword

Java leans on the system's default charset when encoding isn't specified. It's like your default search engine - convenient but not always what you need. So, to avoid unanticipated scenarios, set StandardCharsets.UTF_8 manually for consistent behavior.

Common conversion scenarios

Base64 for the win!

For byte[] to String conversion and vice versa, especially with binary data, Base64 encoding is your best friend. Safe and reliable - like a well-trained retriever!

Charset consistency is key

Everyone hates mismatched socks, right? Charset mismatch during conversion can lead to equally frustrating results. So, always match your charsets!

Default charset blues

The system's default charset may not be UTF-8, especially on older Java systems or in certain environments. And nobody likes unexpected surprises, right?

Perfecting byte array and string conversions

Experiment with charsets

Validate your conversions by testing different charsets. It's like trying different types of pizza to find your favorite!

Lost in translation

During encoding, unknown characters may get replaced with placeholders (e.g., ?). Like your suitcase getting misplaced at the airport - you don't want that!