logo

Konwertuj ciąg wartości szesnastkowych na ciąg wartości ASCII

Biorąc pod uwagę ciąg wartości szesnastkowych jako dane wejściowe, zadaniem jest przekonwertowanie danego ciągu wartości szesnastkowych na odpowiadający mu ciąg w formacie ASCII.

Przykłady:



Wejście: 6765656b73
Wyjście: maniacy

Wejście: 6176656e67657273
Wyjście: Mściciele

System numeracji szesnastkowej lub po prostu szesnastkowy wykorzystuje system podstawy 16. Ponieważ jest to system Base-16, istnieje 16 możliwych symboli cyfrowych. Liczba szesnastkowa wykorzystuje 16 symboli {0, 1, 2, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} do przedstawienia wszystkich liczb. Tutaj (A, B, C, D, E, F) oznacza (10, 11, 12, 13, 14, 15).



ASCII oznacza Amerykański standardowy kodeks wymiany informacji . ASCII to standard, który przypisuje litery, cyfry i inne znaki w ramach 256 miejsc dostępnych w kodzie 8-bitowym. Np. mała litera h (Char) ma wartość dziesiętną 104, czyli 01101000 w formacie binarnym i 68 w formacie szesnastkowym.

Algorytm:

  1. Zainicjuj końcowy ciąg znaków ASCII jako pusty.
  2. Wyodrębnij pierwsze dwa znaki z ciągu szesnastkowego przyjętego jako dane wejściowe.
  3. Zamień ją na liczbę całkowitą o podstawie 16.
  4. Rzuć tę liczbę całkowitą na znak, który jest odpowiednikiem 2 znaków szesnastkowych w ASCII.
  5. Dodaj ten znak do końcowego ciągu.
  6. Wyodrębnij kolejne dwa znaki z ciągu szesnastkowego i przejdź do kroku 3.
  7. Wykonaj poniższe kroki, aby wyodrębnić wszystkie znaki z ciągu szesnastkowego.



Realizacja:

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>

>

dynamiczna tablica w Javie
>

Jawa




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

>

instrukcja bash if

>

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

>

>

Wyjście

geeks>

Złożoność czasowa : O(N), gdzie N jest długością danego ciągu
Przestrzeń pomocnicza : NA)

Podejście 2: Używanie operacji bitowych:

Podejście to polega na użyciu operacji bitowych w celu bezpośredniej konwersji ciągu szesnastkowego na ciąg ASCII. W tym podejściu zaczęlibyśmy od konwersji ciągu szesnastkowego na serię bajtów. Możemy to zrobić, iterując po ciągu i konwertując każdą parę cyfr szesnastkowych na bajt. Kiedy już mamy bajty, możemy użyć operacji bitowych, aby przekonwertować je na znaki w ciągu ASCII.

W tej implementacji używamy strumienia string do zbudowania ciągu ASCII. Wykonujemy iterację po ciągu szesnastkowym, konwertując każdą parę cyfr szesnastkowych na bajt za pomocą stoi. Następnie dołączamy bajt do strumienia stringstream. Na koniec zwracamy zawartość strumienia znaków jako ciąg znaków ASCII.

Oto kod tego podejścia:

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

>

>

Jawa




Oracle SQL nie jest równy

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>

>

>

pełna forma i d e

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

>

>

Wyjście

geeks>

Złożoność czasowa: O(n), gdzie N jest długością danego ciągu
Przestrzeń pomocnicza: O(n)