Convert Hex to ASCII in Java

1. Overview

In this quick article, we’re going to do some simple conversions between the Hex and ASCII formats.

In a typical use case, the Hex format can be used to write down very large integer values in a compact form. For example, AD45 is shorter than its decimal equivalent 44357 and as values increase the difference in length becomes even more pronounced.

2. ASCII to Hex

Now, let’s look at our options to convert ASCII values to Hex:

  1. Convert String to char array
  2. Cast each char to an int
  3. Use Integer.toHexString() to convert it to Hex

Here’s a quick example how we can achieve above steps:

private static String asciiToHex(String asciiStr) {
    char[] chars = asciiStr.toCharArray();
    StringBuilder hex = new StringBuilder();
    for (char ch : chars) {
        hex.append(Integer.toHexString((int) ch));
    }

    return hex.toString();
}

3. Hex to ASCII Format

Similarly, let’s do a Hex to ASCII format conversion in three steps :

  1. Cut the Hex value in 2 char groups
  2. Convert it to base 16 Integer using Integer.parseInt(hex, 16) and cast to char
  3. Append all chars in a StringBuilder

Let’s look at an example how we can achieve above steps:

private static String hexToAscii(String hexStr) {
    StringBuilder output = new StringBuilder("");
    
    for (int i = 0; i < hexStr.length(); i += 2) {
        String str = hexStr.substring(i, i + 2);
        output.append((char) Integer.parseInt(str, 16));
    }
    
    return output.toString();
}

4. Test

Finally, using these methods, let’s do a quick test :

@Test
public static void whenHexToAscii() {
    String asciiString = "www.maixuanviet.com";
    String hexEquivalent = 
      "7777772e6261656c64756e672e636f6d";

    assertEquals(asciiString, hexToAscii(hexEquivalent));
}

@Test
public static void whenAsciiToHex() {
    String asciiString = "www.maixuanviet.com";
    String hexEquivalent = 
      "7777772e6261656c64756e672e636f6d";

    assertEquals(hexEquivalent, asciiToHex(asciiString));
}

5. Conclusion

To conclude, we looked at the simplest ways of converting between ASCII and Hex using Java.

The implementation of all these examples and code snippets can be found in the github project – simply import the project and run as it is.

Related posts:

Java Program to Implement Pagoda
Spring Webflux and CORS
Java Program to Perform the Sorting Using Counting Sort
Spring Boot - Rest Controller Unit Test
Java Program to Perform Finite State Automaton based Search
JPA/Hibernate Persistence Context
Remove HTML tags from a file to extract only the TEXT
Getting the Size of an Iterable in Java
Initialize a HashMap in Java
Creating a Web Application with Spring 5
Java Program to Implement Hash Tables Chaining with Doubly Linked Lists
Java Program to Find the Shortest Path from Source Vertex to All Other Vertices in Linear Time
Java Program to Represent Graph Using Adjacency Matrix
Stack Memory and Heap Space in Java
Model, ModelMap, and ModelAndView in Spring MVC
Debug a JavaMail Program
Java Program to Generate Random Partition out of a Given Set of Numbers or Characters
Converting Between Byte Arrays and Hexadecimal Strings in Java
Java Program to Check whether Graph is Biconnected
New Features in Java 9
REST Web service: Tạo ứng dụng Java RESTful Client với Jersey Client 2.x
Java Program to Construct an Expression Tree for an Postfix Expression
Custom Cascading in Spring Data MongoDB
Hướng dẫn Java Design Pattern – Mediator
Spring Security Remember Me
Java Program to Compute the Area of a Triangle Using Determinants
Spring WebClient and OAuth2 Support
Java Program to Represent Graph Using Incidence List
Java Program to Implement Jarvis Algorithm
Chuyển đổi Array sang ArrayList và ngược lại
Java Program to Implement Stack using Linked List
Java Program to Implement Wagner and Fisher Algorithm for online String Matching