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:

Hướng dẫn sử dụng Printing Service trong Java
Hướng dẫn Java Design Pattern – Proxy
Spring Boot - Build Systems
Check if there is mail waiting
Spring Boot: Customize Whitelabel Error Page
Java Program to Find a Good Feedback Edge Set in a Graph
Java Program to Implement Radix Sort
Java Program to Implement Quick Sort Using Randomization
Guide to Apache Commons CircularFifoQueue
Introduction to Spring Cloud Stream
Deploy a Spring Boot WAR into a Tomcat Server
Java Map With Case-Insensitive Keys
REST Pagination in Spring
Java Program to Repeatedly Search the Same Text (such as Bible by building a Data Structure)
Check If a File or Directory Exists in Java
String Processing with Apache Commons Lang 3
Generate Spring Boot REST Client with Swagger
Java Program to Implement Ternary Search Algorithm
Rest Web service: Filter và Interceptor với Jersey 2.x (P1)
DistinctBy in the Java Stream API
Finding the Differences Between Two Lists in Java
Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java
Java InputStream to String
Jackson – Unmarshall to Collection/Array
Java Program to Implement Gauss Jordan Elimination
Hướng dẫn sử dụng Java Generics
Java Program to implement Sparse Vector
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
Java – Get Random Item/Element From a List
New Features in Java 10
Java Program to Find the Vertex Connectivity of a Graph
Java Program to Find All Pairs Shortest Path