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:

Programmatic Transaction Management in Spring
Java Copy Constructor
Java Program to Check whether Directed Graph is Connected using BFS
Java – Delete a File
A Custom Data Binder in Spring MVC
Spring Boot with Multiple SQL Import Files
Java Program to Implement AA Tree
Comparing Arrays in Java
Java Program to Find SSSP (Single Source Shortest Path) in DAG (Directed Acyclic Graphs)
Java Program to Perform Right Rotation on a Binary Search Tree
Serialization và Deserialization trong java
Java Program to Implement Pollard Rho Algorithm
Tính đóng gói (Encapsulation) trong java
Spring Data Java 8 Support
Java Program to Find Second Smallest of n Elements with Given Complexity Constraint
Java Program to Implement the Alexander Bogomolny’s UnOrdered Permutation Algorithm for Elements Fro...
Java Program to Perform Postorder Recursive Traversal of a Given Binary Tree
Getting Started with Stream Processing with Spring Cloud Data Flow
Java Program to Check whether Graph is a Bipartite using BFS
Call Methods at Runtime Using Java Reflection
Hướng dẫn Java Design Pattern – Template Method
Java Program to Use rand and srand Functions
Running Spring Boot Applications With Minikube
Batch Processing with Spring Cloud Data Flow
Extract network card address
Java toString() Method
Spring Data JPA and Null Parameters
Java Program to Implement PrinterStateReasons API
Java Program to Generate All Subsets of a Given Set in the Lexico Graphic Order
Java Program to Find Maximum Element in an Array using Binary Search
Java List UnsupportedOperationException
Java Program to Check Whether a Directed Graph Contains a Eulerian Path