Givet den hexadecimale værdistreng som input, er opgaven at konvertere den givne hexadecimale værdistreng til dens tilsvarende ASCII-formatstreng.
Eksempler:
Input: 6765656b73
Produktion: nørder
Input: 6176656e67657273
Produktion: hævnere
Det hexadecimale eller blot hexadecimale nummereringssystem bruger Base of 16-systemet. Da det er et Base-16-system, er der 16 mulige ciffersymboler. Det hexadecimale tal bruger 16 symboler {0, 1, 2, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} til at repræsentere alle tal. Her repræsenterer (A, B, C, D, E, F) (10, 11, 12, 13, 14, 15).
ASCII står for Amerikansk standardkode for informationsudveksling . ASCII er en standard, der tildeler bogstaver, tal og andre tegn inden for de 256 pladser, der er tilgængelige i 8-bit-koden. F.eks. har små bogstaver h-tegn (Char) en decimalværdi på 104, hvilket er 01101000 i binær og 68 i hexadecimal.
Algoritme:
- Initialiser den sidste ascii-streng som tom.
- Udtræk de første to tegn fra den hexadecimale streng taget som input.
- Konverter det til base 16 heltal.
- Kast dette heltal til karakter, som er ASCII-ækvivalent med 2 char hex.
- Tilføj dette tegn til den endelige streng.
- Udtræk de næste to tegn fra hexadecimal streng og gå til trin 3.
- Følg disse trin for at udtrække alle tegn fra hexadecimal streng.

Implementering:
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> |
>
vikas diviakirti
>
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
ulv mod ræv
# 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'));> |
>
>Produktion
geeks>
Tidskompleksitet : O(N), hvor N er længden af den givne streng
Hjælpeplads : PÅ)
Fremgangsmåde 2: Brug af bitvise operationer:
Denne tilgang er at bruge bitvise operationer til direkte at konvertere den hexadecimale streng til en ASCII-streng. I denne tilgang ville vi starte med at konvertere den hexadecimale streng til en række bytes. Vi kan gøre dette ved at iterere gennem strengen og konvertere hvert par hexadecimale cifre til en byte. Når vi har bytes, kan vi bruge bitvise operationer til at konvertere dem til tegn i ASCII-strengen.
I denne implementering bruger vi en strengstrøm til at bygge ASCII-strengen. Vi itererer gennem den hexadecimale streng og konverterer hvert par hexadecimale cifre til en byte ved hjælp af stoi. Derefter tilføjer vi byten til strengstrømmen. Til sidst returnerer vi indholdet af strengstrømmen som ASCII-strengen.
Her er koden for denne tilgang:
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; }> |
>
0,06 som en brøkdel
>
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#
java andet
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.> |
>
>
Produktion
geeks>
Tidskompleksitet: O(n), hvor N er længden af den givne streng
Hjælpeplads: O(n)