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:

Quick Guide on Loading Initial Data with Spring Boot
Guide to the Volatile Keyword in Java
Java Program to Sort an Array of 10 Elements Using Heap Sort Algorithm
Using a List of Values in a JdbcTemplate IN Clause
HttpClient 4 – Send Custom Cookie
Immutable Map Implementations in Java
List Interface trong Java
Convert char to String in Java
HttpClient 4 Cookbook
Rate Limiting in Spring Cloud Netflix Zuul
Java Program to Generate All Possible Subsets with Exactly k Elements in Each Subset
Java Program to Find the Shortest Path from Source Vertex to All Other Vertices in Linear Time
Introduction to Spring Security Expressions
Retrieve User Information in Spring Security
Wiring in Spring: @Autowired, @Resource and @Inject
Java Program to Implement Range Tree
SOAP Web service: Authentication trong JAX-WS
Java Program to Perform Finite State Automaton based Search
Java Program to Implement the One Time Pad Algorithm
Java Program to Implement Selection Sort
Dynamic Proxies in Java
Java Program to Check if a Point d lies Inside or Outside a Circle Defined by Points a, b, c in a Pl...
Prevent Cross-Site Scripting (XSS) in a Spring Application
Deploy a Spring Boot App to Azure
Hướng dẫn Java Design Pattern – Object Pool
Java Program to Generate a Graph for a Given Fixed Degree Sequence
Java Program to Implement Fibonacci Heap
Convert String to int or Integer in Java
Java InputStream to String
Java Program to Implement Shoelace Algorithm
Concrete Class in Java
Hướng dẫn sử dụng Lớp FilePermission trong java