Many times we do need to convert the string values ASCII from/to Hex format. In this small, post I am giving you two small code snippets which you can utilize to convert a string from Hex to ASCII or ASCII to Hex, as you want.
Overall conversion logic looks like this:
Hex -- Decimal -- ASCII
Convert ASCII to Hex
It is done in following steps:
- Convert String to char array
- Cast it to Integer
- Use Integer.toHexString() to convert it to Hex
ASCII to Hex Example Code
private static String asciiToHex(String asciiValue) { char[] chars = asciiValue.toCharArray(); StringBuffer hex = new StringBuffer(); for (int i = 0; i < chars.length; i++) { hex.append(Integer.toHexString((int) chars[i])); } return hex.toString(); }
Convert Hex to ASCII
It is done in following steps:
- Cut the Hex value in 2 chars groups
- Convert it to base 16 Integer using Integer.parseInt(hex, 16) and cast to char
- Append all chars in StringBuilder
Hex to ASCII Example Code
private static String hexToASCII(String hexValue) { StringBuilder output = new StringBuilder(""); for (int i = 0; i < hexValue.length(); i += 2) { String str = hexValue.substring(i, i + 2); output.append((char) Integer.parseInt(str, 16)); } return output.toString(); }
Now let’s test above methods with sample input data.
Complete Example for Hex to ASCII and ASCII to Hex Conversion
In this example, I am converting a string “//howtodoinjava.com” to first in hex format, and then convert that hex string to again in ASCII value. This converted ASCII value should be equal to original string i.e. “//howtodoinjava.com”.
package test.core; public class HexAsciiConversionExamples { public static void main(String[] args) { String demoString = "//howtodoinjava.com"; //Original String System.out.println("Original String: "+ demoString); String hexEquivalent = asciiToHex(demoString); //Hex value of original String System.out.println("Hex String: "+ hexEquivalent); String asciiEquivalent = hexToASCII(hexEquivalent); //ASCII value obtained from Hex value System.out.println("Ascii String: "+ asciiEquivalent); } private static String asciiToHex(String asciiValue) { char[] chars = asciiValue.toCharArray(); StringBuffer hex = new StringBuffer(); for (int i = 0; i < chars.length; i++) { hex.append(Integer.toHexString((int) chars[i])); } return hex.toString(); } private static String hexToASCII(String hexValue) { StringBuilder output = new StringBuilder(""); for (int i = 0; i < hexValue.length(); i += 2) { String str = hexValue.substring(i, i + 2); output.append((char) Integer.parseInt(str, 16)); } return output.toString(); } }
Output:
Original String: //howtodoinjava.com
Hex String: 687474703a2f2f686f77746f646f696e6a6176612e636f6d
Ascii String: //howtodoinjava.com
Happy Learning !!
Leave a Reply