logo

Converti stringa di valore esadecimale in stringa di valore ASCII

Data la stringa del valore esadecimale come input, l'attività è convertire la stringa del valore esadecimale specificata nella corrispondente stringa in formato ASCII.

Esempi:

Ingresso: 6765656b73
Produzione: geek



Ingresso: 6176656e67657273
Produzione: Vendicatori

Il sistema di numerazione esadecimale o semplicemente esadecimale utilizza il sistema Base di 16. Essendo un sistema Base-16, ci sono 16 possibili simboli di cifre. Il numero esadecimale utilizza 16 simboli {0, 1, 2, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} per rappresentare tutti i numeri. Qui, (A, B, C, D, E, F) rappresenta (10, 11, 12, 13, 14, 15).

ASCII sta per Codice Standard Americano per Interscambio di Informazioni . ASCII è uno standard che assegna lettere, numeri e altri caratteri all'interno dei 256 slot disponibili nel codice a 8 bit. Ad esempio, il carattere h minuscolo (Char) ha un valore decimale di 104, che è 01101000 in binario e 68 in esadecimale.

Algoritmo:

  1. Inizializza la stringa ASCII finale come vuota.
  2. Estrai i primi due caratteri dalla stringa esadecimale presa come input.
  3. Convertilo in un intero in base 16.
  4. Converti questo numero intero in un carattere che è equivalente ASCII di 2 caratteri esadecimali.
  5. Aggiungi questo carattere alla stringa finale.
  6. Estrai i successivi due caratteri dalla stringa esadecimale e vai al passaggio 3.
  7. Seguire questi passaggi per estrarre tutti i caratteri dalla stringa esadecimale.

Implementazione:

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>

>

quante città negli Stati Uniti
>

Giava




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

Edith Mack Hirsch

>

>

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

>

>

Produzione

geeks>

Complessità temporale : O(N), dove N è la lunghezza della stringa data
Spazio ausiliario : SU)

Approccio 2: utilizzo delle operazioni bit a bit:

Questo approccio consiste nell'utilizzare operazioni bit per bit per convertire direttamente la stringa esadecimale in una stringa ASCII. In questo approccio, inizieremmo convertendo la stringa esadecimale in una serie di byte. Possiamo farlo scorrendo la stringa e convertendo ogni coppia di cifre esadecimali in un byte. Una volta ottenuti i byte, possiamo utilizzare operazioni bit a bit per convertirli in caratteri nella stringa ASCII.

In questa implementazione, utilizziamo uno stringstream per creare la stringa ASCII. Iteriamo attraverso la stringa esadecimale, convertendo ogni coppia di cifre esadecimali in un byte utilizzando stoi. Quindi, aggiungiamo il byte allo stringstream. Infine, restituiamo il contenuto dello stringstream come stringa ASCII.

Ecco il codice di questo approccio:

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; }>

>

>

Giava




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


verilog sempre



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

>

attraversamento postordine di un albero binario

>

Produzione

geeks>

Complessità temporale: O(n), dove N è la lunghezza della stringa data
Spazio ausiliario: O(n)