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:

Using Java Assertions
Introduction to Spring Boot CLI
Java Program to Implement Dijkstra’s Algorithm using Queue
Abstract class và Interface trong Java
Java Program to Implement Euler Circuit Problem
Giới thiệu Swagger – Công cụ document cho RESTfull APIs
Java Program to Implement the Bin Packing Algorithm
Hướng dẫn sử dụng Java Generics
Jackson – Bidirectional Relationships
Tìm hiểu về xác thực và phân quyền trong ứng dụng
Java Program to Implement Graph Coloring Algorithm
Returning Custom Status Codes from Spring Controllers
Java Program to Generate Random Numbers Using Middle Square Method
Introduction to Netflix Archaius with Spring Cloud
Tính đa hình (Polymorphism) trong Java
Java Program to Perform Naive String Matching
Java Program to implement Circular Buffer
Java Program to Sort an Array of 10 Elements Using Heap Sort Algorithm
So sánh HashSet, LinkedHashSet và TreeSet trong Java
HandlerAdapters in Spring MVC
Java Program to Implement Bloom Filter
Creating Docker Images with Spring Boot
Testing in Spring Boot
Java Program to find the number of occurrences of a given number using Binary Search approach
Toán tử instanceof trong java
HttpAsyncClient Tutorial
Practical Java Examples of the Big O Notation
Spring REST API + OAuth2 + Angular
Java Program to Create a Random Graph Using Random Edge Generation
Spring Boot - Securing Web Applications
Java Program to Find a Good Feedback Vertex Set
Java Program to Describe the Representation of Graph using Incidence Matrix