Convertiți șirul de valoare hexazecimală în șir de valoare ASCII

Convertiți șirul de valoare hexazecimală în șir de valoare ASCII

Având în vedere șirul de valoare hexazecimală ca intrare, sarcina este de a converti șirul de valoare hexazecimală dat în șirul de format ASCII corespunzător.

Exemple:

Intrare: 6765656b73
Ieșire: tocilari

Intrare: 6176656e67657273
Ieșire: Razbunatorii

Sistemul de numerotare hexazecimală sau pur și simplu hexadecimală utilizează sistemul de bază 16. Fiind un sistem Base-16, există 16 simboluri de cifre posibile. Numărul hexazecimal folosește 16 simboluri {0, 1, 2, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} pentru a reprezenta toate numerele. Aici, (A, B, C, D, E, F) reprezintă (10, 11, 12, 13, 14, 15).

ASCII înseamnă Codul American Standard pentru Schimbul de Informații . ASCII este un standard care atribuie litere, numere și alte caractere în cele 256 de sloturi disponibile în codul de 8 biți. De exemplu, caracterul minuscul h (Char) are o valoare zecimală de 104, care este 01101000 în binar și 68 în hexazecimal.

Algoritm:

  1. Inițializați șirul ascii final ca gol.
  2. Extrageți primele două caractere din șirul hexazecimal luat ca intrare.
  3. Transformați-l în număr întreg de bază 16.
  4. Transmite acest număr întreg într-un caracter care este echivalentul ASCII a 2 char hex.
  5. Adăugați acest caracter la șirul final.
  6. Extrageți următoarele două caractere din șirul hexazecimal și treceți la pasul 3.
  7. Urmați acești pași pentru a extrage toate caracterele din șirul hexazecimal.

Implementare:

C++




// C++ program to convert hexadecimal> // string to ASCII format string> #include> using> namespace> std;> string hexToASCII(string hex)> {> > // initialize the ASCII code string as empty.> > string ascii => ''> ;> > for> (> size_t> i = 0; i { // 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




// 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 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




# 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#




// 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 { // 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>

Javascript




> > // 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 // 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'));>

Ieșire

geeks 

Complexitatea timpului : O(N), unde N este lungimea șirului dat
Spațiu auxiliar : PE)

Abordarea 2: Utilizarea operațiilor pe biți:

Această abordare este de a utiliza operații pe biți pentru a converti direct șirul hexazecimal într-un șir ASCII. În această abordare, am începe prin a converti șirul hexazecimal într-o serie de octeți. Putem face acest lucru prin iterarea șirului și conversia fiecărei perechi de cifre hexazecimale într-un octet. Odată ce avem octeții, putem folosi operații pe biți pentru a le converti în caractere din șirul ASCII.

În această implementare, folosim un stringstream pentru a construi șirul ASCII. Repetăm ​​șirul hexazecimal, transformând fiecare pereche de cifre hexazecimale într-un octet folosind stoi. Apoi, anexăm octetul la fluxul de șiruri. În cele din urmă, returnăm conținutul fluxului de șiruri ca șir ASCII.

Iată codul acestei abordări:

C++




#include> using> namespace> std;> string hexToASCII(std::string hex) {> > stringstream ss;> > for> (> size_t> i = 0; i 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; }>

Java




import> java.util.*;> public> class> HexToASCII {> > public> static> String hexToASCII(String hex) {> > StringBuilder sb => new> StringBuilder();> > for> (> int> i => 0> ; 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); } }>

Python3




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)>

C#




using> System;> using> System.Text;> public> class> Program> {> > public> static> string> HexToASCII(> string> hex)> > {> > StringBuilder sb => new> StringBuilder();> > for> (> int> i = 0; i { 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




// Javascript code addition> function> hexToASCII(hex) {> > let sb => ''> ;> > for> (let i = 0; i 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.>

Ieșire

geeks 

Complexitatea timpului: O(n), unde N este lungimea șirului dat
Spațiu auxiliar: O(n)