Convert String to Byte ArrayConvert byte arrays into Strings and Strings into byte arrays. Use the String constructor and the getBytes method.
This page was last reviewed on May 26, 2023.
String, byte array. Strings are composed of characters, and characters of bytes. Chars use 2 bytes each, but often with ASCII text they can be represented in 1 byte.
With the String constructor, we create a String based on the elements in a byte array. And with String's getBytes methods, we convert String data to byte arrays.
Byte array to String. This program creates a byte array with the values 97, 98 and 99. These numbers are ASCII codes for the lowercase letters "abc."
Tip Variants of the String constructor exist. One constructs based on a range of bytes (specified by a start and offset).
Tip 2 A Charset is an optional argument. If your String contains a specific encoding of chars, please use a Charset.
public class Program { public static void main(String[] args) { // These are the ASCII values for lowercase A, B and C. byte[] array = { 97, 98, 99 }; String result = new String(array); System.out.println(result); } }
Convert from String to byte array. Excellent support too exists for converting a String to a byte array. We use getBytes, a method on the String class.
Info With no argument, we use the system's default charset to convert the String to a byte array.
Here A Charset is used based on the name provided. We test this with US-ASCII which supports 7-bit chars.
Note The example uses Array.toString to "pretty-print" the arrays to the Console output.
import java.io.UnsupportedEncodingException; import java.util.Arrays; public class Program { public static void main(String[] args) throws UnsupportedEncodingException { // The string we want to convert. String letters = "abc"; System.out.println(letters); // Use default charset. byte[] valuesDefault = letters.getBytes(); // ... Use Arrays.toString to display our byte array. System.out.println(Arrays.toString(valuesDefault)); // Specify US-ASCII char set directly. byte[] valuesAscii = letters.getBytes("US-ASCII"); System.out.println(Arrays.toString(valuesAscii)); } }
abc [97, 98, 99] [97, 98, 99]
Charsets are complex. Not all text is easy-to-process 7-bit ASCII. With byte arrays, we convert 2 byte chars into 1 byte elements. This is problematic but sometimes safe.
In Java, built-in approaches, like the String constructor and the getBytes methods, are handy. We can specify charsets. And for debugging, Arrays.toString displays byte arrays.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on May 26, 2023 (edit).
© 2007-2024 Sam Allen.