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: tocilariIntrare: 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:
- Inițializați șirul ascii final ca gol.
- Extrageți primele două caractere din șirul hexazecimal luat ca intrare.
- Transformați-l în număr întreg de bază 16.
- Transmite acest număr întreg într-un caracter care este echivalentul ASCII a 2 char hex.
- Adăugați acest caracter la șirul final.
- Extrageți următoarele două caractere din șirul hexazecimal și treceți la pasul 3.
- 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)