Враховуючи рядок шістнадцяткового значення як вхід, завдання полягає в тому, щоб перетворити даний рядок шістнадцяткового значення у відповідний рядок формату ASCII.
приклади:
введення: 6765656b73
Вихід: вундеркінди
введення: 6176656e67657273
Вихід: месники
У шістнадцятковій або просто шістнадцятковій системі числення використовується система 16. У системі Base-16 існує 16 можливих символів цифр. Для позначення всіх чисел шістнадцяткове число використовує 16 символів {0, 1, 2, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}. Тут (A, B, C, D, E, F) означає (10, 11, 12, 13, 14, 15).
ASCII означає Американський стандартний код для обміну інформацією . ASCII — це стандарт, який призначає літери, цифри та інші символи в межах 256 слотів, доступних у 8-бітному коді. Наприклад, символ нижнього регістру h (Char) має десяткове значення 104, яке дорівнює 01101000 у двійковій системі та 68 у шістнадцятковій системі.
Алгоритм:
- Ініціалізувати кінцевий рядок ascii як порожній.
- Витягти перші два символи з шістнадцяткового рядка, прийнятого як вхідні дані.
- Перетворіть його на ціле число з основою 16.
- Переведіть це ціле число до символу, який є ASCII-еквівалентом 2 символів hex.
- Додайте цей символ до останнього рядка.
- Витягніть наступні два символи з шістнадцяткового рядка та перейдіть до кроку 3.
- Виконайте ці кроки, щоб витягти всі символи з шістнадцяткового рядка.

Реалізація:
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
// 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'));> |
>
>Вихід
geeks>
Часова складність : O(N), де N — довжина даного рядка
Допоміжне приміщення : O(N)
Підхід 2: Використання побітових операцій:
форматувати дату в рядок
Цей підхід передбачає використання побітових операцій для безпосереднього перетворення шістнадцяткового рядка в рядок ASCII. У цьому підході ми б почали з перетворення шістнадцяткового рядка в ряд байтів. Ми можемо зробити це, перебираючи рядок і перетворюючи кожну пару шістнадцяткових цифр у байт. Отримавши байти, ми можемо використовувати побітові операції, щоб перетворити їх на символи в рядку ASCII.
У цій реалізації ми використовуємо рядковий потік для створення рядка ASCII. Ми повторюємо шістнадцятковий рядок, перетворюючи кожну пару шістнадцяткових цифр у байт за допомогою стої. Потім ми додаємо байт до рядкового потоку. Нарешті, ми повертаємо вміст рядкового потоку як рядок ASCII.
Ось код цього підходу:
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
форматувати рядок Java
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.> |
>
>
Вихід
geeks>
Часова складність: O(n), де N – довжина даного рядка
Допоміжний простір: O(n)