How To Convert Bytes To String In Java

One of the basics and fundamental part  of programming is learning how to convert one data type into another. It is a basic skill that must be acquired in order to perfect any programming language. With the help of this blog we will learn methods for  transforming byte data into string within Java programming language.

A byte is generally a unit of data that is eight binary digits long and is also used as a unit by computers to represent a character like numbers or letters and each byte can hold a string of bits which is thereby a smaller unit of bytes.

Why is there a need to change byte to string in java?

Converting from bytes to strings is necessary in many situations in Java, especially when dealing with data transmission, processing, and character encoding.

Data transmission: Data is frequently represented as a series of bytes when it is transferred across a network or saved in a file. The data must be further changed or converted to strings before it can be represented as text.

Data processing: Even if data is originally represented as bytes, it may need to be processed as text at times.

Approaches

In java programming language there are various methods used to convert bytes to string in java and few of them are mentioned below:

  1. Using the String class constructor
  2. Using the valueOf() method of the String class
  3. Using the toString() method of Byte class
  4. Using the getByte() method

Approach 1: Using the String class constructor

This can be done with the help of a string class constructor

  • The constructor takes an array of bytes as its parameter
  • The created  byte array  with the byte value  is then further converted to a string

SYNTAX

byte b = 65; // byte value to be converted
String s = new String(new byte[]{b}); // convert byte to string

 CODE

public class byteToString{  
public static void main(String args[]){  
byte b = 65; // byte value to be converted
String s = new String(new byte[]{b}); // convert byte to string
System.out.println("THE STRING VALUE IS" + s);
}} 

OUTPUT

THE STRING VALUE  IS A

EXPLANATION

  • Create the byte variable b with the value 65 (the ASCII character for “A”)
  • Create a byte array using b as its only element.
  • To the function Object() { [native code] } of the String class, pass the byte array.
  • Make a new string called s that contains the character that corresponds to the given byte value.
  • One character, ‘A,’ representing ASCII byte value 65, will be present in the output string s.

Approach 2: Using the valueOf() method of the String class

This can be done with the help of a method called valueof()  of string class

  • The predefined method takes the value of byte
  • The method valueOf() take the byte value and there by converts it to a string value and stores the output to a given variable

SYNTAX

byte b = 65;
String s = String.valueOf(b);

CODE

public class byteToString{  
public static void main(String args[]){  
byte b = 65; // byte value to be converted
String s = String.valueOf(b); // convert byte to string
System.out.println("THE STRING VALUE IS" + s);
}} 

OUTPUT

THE STRING VALUE IS A

EXPLANATION

  • A data type byte is declared assigning the value as 65
  • A String variable ’s’ is declared which stores the value of the converted byte
  • Further the method String.valueOf() is deployed which converts the byte to string
  • At last the system prints the String value of the byte.

Approach 3: Using the toString() method of Byte class

This can be done with the help of a method called toString() of byte class

  • The predefined method toString() is deployed which takes the value of byte
  • The method  toString()  take the byte value and there by converts it to a string value and stores the output to a given variable

SYNTAX

Byte myByte = 65; // example Byte value
String myString = myByte.toString(); // convert Byte to String
System.out.println(myString); 

CODE

public class byteToString{  
public static void main(String args[]){  
byte b = 65; // byte value to be converted
String s =b.toString(); // convert byte to string
System.out.println("THE STRING VALUE IS" + s);
}} 

OUTPUT

THE STRING VALUE IS A

EXPLANATION

  • A data type byte is declared assigning the value as 65
  • A String variable ’s’ is declared which stores the value of the converted byte
  • Further the method ToString() is deployed along with the byte which converts the byte to string
  • At last the system prints the String value of the byte.

Approach 4: Using the getByte() method

This can be done with the of getByte() method in java

SYNTAX

 String str = "Hello, world!";
        byte[] bytes = str.getBytes();

CODE

public class StringToByteExample {
    public static void main(String[] args) {
        String str = "Hello, world!";
        byte[] bytes = str.getBytes();
        System.out.println(Arrays.toString(bytes));
    }
}

OUTPUT

[72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33]

EXPLANATION

  • We call the getBytes() method on the string class, which gives an array of bytes representing the string.
  • The byte array is then stored in the bytes variable.
  • Atlast we use the Arrays.toString() method to print out the output

BEST APPROACH

The valueOf() method in Java is considered the best approach when converting a byte to a String in Java.

  • This method is a member of the Byte class, which is an  encapsulated class for the primitive data type byte.
  • The valueOf() function accepts a byte value and returns a String representation of it. This function internally builds and returns a new String object
  • The valueOf() method has the advantage of gracefully handling null input values. If a null value is provided to the method, its returning value will be null.

Sample problems:

Sample Problem 1:

 we’re creating a web application that allows users to upload files and convert the bytes in the file to a string representation for storage in a database. However, some users may upload files that are too large to store as a single string, in which case we must  break the bytes and convert each of them  to a string individually.

Write a  code that accepts a byte array and a break the size of the byte  and returns an ArrayList of strings, where each string represents a piece of the byte array.

Solution:

  • we have created a public static method called “convertBytesToStrings” that accepts two parameters: a byte array “bytes” and an integer “chunkSize”.
  • An ArrayList of strings named “strings” is formed within the procedure.
  • The variable “numChunks” calculates the total number of pieces  required to represent the byte array in the chunk size specified. This is accomplished by dividing the length of the byte array by the chunk size and taking the result as the ceiling.
  • To traverse over each portion of the byte array, a for loop is utilised. The loop is repeated “numChunks” times.
  • Inside the loop, the current chunk’s starting index is calculated as “i * chunkSize”. The ending index is determined by taking the smallest of “start + chunkSize” and the length of

CODE

public static ArrayList<String> convertBytesToStrings(byte[] bytes, int chunkSize) {
    ArrayList<String> strings = new ArrayList<String>();
    int numChunks = (int) Math.ceil(bytes.length / (double) chunkSize);

    for (int i = 0; i < numChunks; i++) {
        int start = i * chunkSize;
        int end = Math.min(start + chunkSize, bytes.length);
        byte[] chunk = Arrays.copyOfRange(bytes, start, end);
        strings.add(new String(chunk));
    }

    return strings;
}

OUTPUT

Hello
 world!

Sample Problem 2:

A company that specialises in Internet of Things (IoT) devices has developed a new device that measures the temperature and humidity in a room and sends the data to a server in the form of bytes. The server needs to convert these bytes into strings before storing them in a database for later analysis.

Solution:

  • Declare a byte array called data that contains the ASCII character codes for the string we want to convert to a string.
  • Declare an empty String variable called dataString to hold the resulting string converted to a string.
  • Use a for loop to iterate through each byte in the data array.
  • For each byte, use the valueOf() method of the String class to convert it to a string.
  • The valueOf() method returns a string representation of the given byte value.
  • Concatenate each resulting string to the dataString variable using the += operator.
  • After all bytes have been converted and concatenated, the resulting string is stored in the dataString variable.
  • After all bytes have been converted and concatenated, the resulting string is stored in the dataString variable.
  • Finally, print the resulting string to the console.

CODE

public class ByteToStringExample {
    public static void main(String[] args) {
        // Example byte array containing temperature and humidity data
        byte[] data = {72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33};
        
        // Convert byte array to string using valueOf() method
        String dataString = "";
        for (byte b : data) {
            dataString += String.valueOf(b);
        }
        
        // Print resulting string
        System.out.println(dataString);
    }
}

OUTPUT

72 101 108 108 111 44 32 87 111 114 108 100 33

Sample Problem 3:

Let’s say you are building a client-server application that requires the exchange of binary data in byte format. The server sends a byte array to the client, and the client needs to convert the byte array to a string to display the data to the user.

Solution:

  • public class ByteToStringExample { – This line declares a public class called ByteToStringExample. Classes in Java are used to group related code together and create objects that can be used in a program.
  • public static void main(String[] args) { – This line defines the main method, which is the entry point of the program. The public keyword indicates that the method is visible to all other classes, while the static keyword means that the method can be called without creating an instance of the class.
  • byte b = 65; – This line creates a byte variable called b and assigns it the value 65. In Java, bytes are represented as integer values between -128 and 127.
  • String byteString = Byte.toString(b); – This line converts the byte b to a string using the Byte class’s toString() method. The result is stored in a new string variable called byteString.
  • System.out.println(“Byte as String: ” + byteString); – This line prints the string representation of the byte to the console using the System.out.println() method. The plus sign concatenates the string “Byte as String: ” with the value of the byteString variable.
  •  The resulting string is then printed to the console.

CODE

public class ByteToStringExample {
    public static void main(String[] args) {
        // Define the byte to be converted to string
        byte b = 65;

        // Convert the byte to a string using the Byte class's toString() method
        String byteString = Byte.toString(b);

        // Print the string representation of the byte to the console
        System.out.println("Byte as String: " + byteString);
    }
}

 Output

Byte as String: 65

Sample Problem 4:

Write a code that reads bytes from a database and converts them to a string using the getByte() method in Java

Solution:

  • Define the class DatabaseToStringExample.
  • Define the database credentials as String variables: url, user, and password.
  • Use a try-with-resources block to connect to the database using the DriverManager.getConnection() method and execute a SQL query to retrieve the contents of a table named “example_table” using the Statement.executeQuery() method.
  • Use the ResultSet.getBytes() method to read the contents of the first row into a byte array.
  • Convert the byte array to a string using UTF-8 encoding using the String constructor that takes a byte array and a Charset as parameters.
  • Print the resulting string to the console using the System.out.println() method.
  • Handle any exceptions that may be thrown by the code using a catch block.

CODE

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.nio.charset.StandardCharsets;

public class DatabaseToStringExample {
    public static void main(String[] args) {
        // Database credentials
        String url = "jdbc:mysql://localhost:3306/example_db";
        String user = "username";
        String password = "password";

        try (Connection conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT content FROM example_table")) {

            // Read bytes from the database into a byte array
            rs.next();
            byte[] byteArray = rs.getBytes("content");

            // Convert the byte array to a string using UTF-8 encoding
            String str = new String(byteArray, StandardCharsets.UTF_8);

            // Print the string
            System.out.println(str);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Output

The output will depend entirely on the data stored in the database.

Conclusion

In conclusion, java programming frequently involves  parsing bytes to string data types. This blog post covers several methods for doing byte  to string conversions in Java. The ideal strategy will rely on the demands of your project.

You may effectively convert byte to a string in Java and then manipulate the string as necessary by employing the right strategy.