Given the Hexadecimal value string as input, the task is to convert the given hexadecimal value string into its corresponding ASCII format string.
Examples:
Input: 6765656b73
Output: geeksInput: 6176656e67657273
Output: avengers
The “Hexadecimal” or simply “Hex” numbering system uses the Base of 16 system. Being a Base-16 system, there are 16 possible digit symbols. The hexadecimal number uses 16 symbols {0, 1, 2, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} to represent all numbers. Here, (A, B, C, D, E, F) represents (10, 11, 12, 13, 14, 15).
ASCII stands for American Standard Code for Information Interchange. ASCII is a standard that assigns letters, numbers, and other characters within the 256 slots available in the 8-bit code. E.g the lower case “h” character (Char) has a decimal value of 104, which is “01101000” in binary and “68” in hexadecimal.
Algorithm:
- Initialize final ascii string as empty.
- Extract first two characters from the hexadecimal string taken as input.
- Convert it into base 16 integer.
- Cast this integer to character which is ASCII equivalent of 2 char hex.
- Add this character to final string.
- Extract next two characters from hexadecimal string and go to step 3.
- Follow these steps to extract all characters from hexadecimal string.
Implementation:
// C++ program to convert hexadecimal // string to ASCII format string #include <bits/stdc++.h> using namespace std;
string hexToASCII(string hex) { // initialize the ASCII code string as empty.
string ascii = "" ;
for ( size_t i = 0; i < hex.length(); i += 2)
{
// extract two characters from hex string
string part = hex.substr(i, 2);
// change it into base 16 and
// typecast as the character
char ch = stoul(part, nullptr, 16);
// add this char to final ASCII string
ascii += ch;
}
return ascii;
} // Driver Code int main()
{ // print the ASCII string.
cout << hexToASCII( "6765656b73" ) << endl;
return 0;
} // This code is contributed by // sanjeev2552 |
// Java program to convert hexadecimal // string to ASCII format string import java.util.Scanner;
public class HexadecimalToASCII {
public static String hexToASCII(String hex)
{
// initialize the ASCII code string as empty.
String ascii = "" ;
for ( int i = 0 ; i < hex.length(); i += 2 ) {
// extract two characters from hex string
String part = hex.substring(i, i + 2 );
// change it into base 16 and typecast as the character
char ch = ( char )Integer.parseInt(part, 16 );
// add this char to final ASCII string
ascii = ascii + ch;
}
return ascii;
}
public static void main(String[] args)
{
// print the ASCII string.
System.out.println(hexToASCII( "6765656b73" ));
}
} |
# Python3 program to convert hexadecimal # string to ASCII format string def hexToASCII(hexx):
# initialize the ASCII code string as empty.
ascii = ""
for i in range ( 0 , len (hexx), 2 ):
# extract two characters from hex string
part = hexx[i : i + 2 ]
# change it into base 16 and
# typecast as the character
ch = chr ( int (part, 16 ))
# add this char to final ASCII string
ascii + = ch
return ascii
# Driver Code if __name__ = = "__main__" :
# print the ASCII string.
print (hexToASCII( "6765656b73" ))
# This code is contributed by # sanjeev2552 |
// C# program to convert hexadecimal // string to ASCII format string using System;
class GFG
{ public static String hexToASCII(String hex)
{
// initialize the ASCII code string as empty.
String ascii = "" ;
for ( int i = 0; i < hex.Length; i += 2)
{
// extract two characters from hex string
String part = hex.Substring(i, 2);
// change it into base 16 and
// typecast as the character
char ch = ( char )Convert.ToInt32(part, 16);;
// add this char to final ASCII string
ascii = ascii + ch;
}
return ascii;
}
// Driver Code
public static void Main(String[] args)
{
// print the ASCII string.
Console.WriteLine(hexToASCII( "6765656b73" ));
}
} // This code is contributed by PrinciRaj1992 |
<script> // JavaScript program to convert hexadecimal
// string to ASCII format string
function hexToASCII(hex) {
// initialize the ASCII code string as empty.
var ascii = "" ;
for ( var i = 0; i < hex.length; i += 2) {
// extract two characters from hex string
var part = hex.substring(i, i + 2);
// change it into base 16 and
// typecast as the character
var ch = String.fromCharCode(parseInt(part, 16));
// add this char to final ASCII string
ascii = ascii + ch;
}
return ascii;
}
// Driver Code
// print the ASCII string.
document.write(hexToASCII( "6765656b73" ));
</script>
|
geeks
Time complexity: O(N), where N is the length of the given string
Auxiliary space: O(N)
Approach 2: Using Bitwise Operations:
This approach is to use bitwise operations to directly convert the hexadecimal string to an ASCII string. In this approach, we would start by converting the hexadecimal string to a series of bytes. We can do this by iterating through the string and converting each pair of hexadecimal digits to a byte. Once we have the bytes, we can use bitwise operations to convert them to characters in the ASCII string.
In this implementation, we use a stringstream to build the ASCII string. We iterate through the hexadecimal string, converting each pair of hexadecimal digits to a byte using stoi. Then, we append the byte to the stringstream. Finally, we return the contents of the stringstream as the ASCII string.
Here is the code of this approach:
#include <bits/stdc++.h> using namespace std;
string hexToASCII(std::string hex) { stringstream ss;
for ( size_t i = 0; i < hex.length(); i += 2) {
unsigned char byte =stoi(hex.substr(i, 2), nullptr, 16);
ss << byte;
}
return ss.str();
} int main() {
string hexString = "6765656b73" ;
string asciiString = hexToASCII(hexString);
cout << asciiString << endl;
return 0;
} |
import java.util.*;
public class HexToASCII {
public static String hexToASCII(String hex) {
StringBuilder sb = new StringBuilder();
for ( int i = 0 ; i < hex.length(); i += 2 ) {
String str = hex.substring(i, i + 2 );
char ch = ( char ) Integer.parseInt(str, 16 );
sb.append(ch);
}
return sb.toString();
}
public static void main(String[] args) {
String hexString = "6765656b73" ;
String asciiString = hexToASCII(hexString);
System.out.println(asciiString);
}
} |
def hex_to_ascii(hex_str):
ascii_str = ""
for i in range ( 0 , len (hex_str), 2 ):
byte = int (hex_str[i:i + 2 ], 16 )
ascii_str + = chr (byte)
return ascii_str
# Driver code hex_string = "6765656b73"
ascii_string = hex_to_ascii(hex_string)
print (ascii_string)
|
using System;
using System.Text;
public class Program
{ public static string HexToASCII( string hex)
{
StringBuilder sb = new StringBuilder();
for ( int i = 0; i < hex.Length; i += 2)
{
byte b = Convert.ToByte(hex.Substring(i, 2), 16);
sb.Append(( char )b);
}
return sb.ToString();
}
public static void Main()
{
string hexString = "6765656b73" ;
string asciiString = HexToASCII(hexString);
Console.WriteLine(asciiString);
}
} // This code is contributed by Prajwal Kandekar |
// Javascript code addition function hexToASCII(hex) {
let sb = "" ;
for (let i = 0; i < hex.length; i += 2) {
let str = hex.substring(i, i + 2);
let ch = String.fromCharCode(parseInt(str, 16));
sb += ch;
}
return sb;
} let hexString = "6765656b73" ;
let asciiString = hexToASCII(hexString); console.log(asciiString); // The code is contributed by Nidhi goel. |
Output
geeks
Time complexity: O(n), where N is the length of the given string
Auxiliary space: O(n)