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:

Toán tử instanceof trong java
Java Program to Implement the linear congruential generator for Pseudo Random Number Generation
Java 8 Stream API Analogies in Kotlin
Exploring the New Spring Cloud Gateway
A Guide to Spring Cloud Netflix – Hystrix
Spring Boot - Exception Handling
Java Program to Perform Arithmetic Operations on Numbers of Size
Spring Data JPA and Null Parameters
Java Program to Use Boruvka’s Algorithm to Find the Minimum Spanning Tree
A Guide To UDP In Java
Java Program to Implement Circular Singly Linked List
Filtering a Stream of Optionals in Java
The HttpMediaTypeNotAcceptableException in Spring MVC
How to Return 404 with Spring WebFlux
Auditing with JPA, Hibernate, and Spring Data JPA
Introduction to Spring Security Expressions
Java Program to Generate Random Numbers Using Probability Distribution Function
Java Program to Perform Postorder Non-Recursive Traversal of a Given Binary Tree
Java Program to Implement Quick Sort Using Randomization
Custom Thread Pools In Java 8 Parallel Streams
Java Program to implement Sparse Vector
Tính kế thừa (Inheritance) trong java
JWT – Token-based Authentication trong Jersey 2.x
Java Program to Implement Find all Back Edges in a Graph
Java Program to Implement Graham Scan Algorithm to Find the Convex Hull
Chuyển đổi từ HashMap sang ArrayList
Java 8 Streams peek() API
An Intro to Spring Cloud Zookeeper
OAuth2 for a Spring REST API – Handle the Refresh Token in Angular
Connect through a Proxy
Java Program for Topological Sorting in Graphs
Chuyển đổi Array sang ArrayList và ngược lại