Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

แปลงสตริงค่า Hexadecimal เป็นสตริงค่า ASCII ใน C++

บทนำ

ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมที่แปลงสตริงค่า Hexadecimal เป็นสตริงค่า ASCII

เราจะได้รับสตริงที่มีค่า Hexadecimal มา ภารกิจคือการนำค่า Hexadecimal นั้นไปแปลงเป็นค่า ASCII ที่เทียบเท่า

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

string convert_ASCII(string hex) {
    string ascii = "";
    for (size_t i = 0; i < hex.length(); i += 2) {
        // นำตัวอักษร 2 ตัวจาก hex string
        string part = hex.substr(i, 2);
        // แปลงเป็นฐาน 16
        char ch = stoul(part, nullptr, 16);
        // ใส่ลงใน ASCII string
        ascii += ch;
    }
    return ascii;
}

int main() {
    cout << convert_ASCII("6176656e67657273") << endl;
    return 0;
}

ผลลัพธ์

avengers

คำอธิบาย

ฟังก์ชัน convert_ASCII() ทำงานโดยวนลูปอ่านสตริง Hex ทีละ 2 ตัวอักษร (1 ไบต์) ใช้ substr() ดึงส่วนย่อย แล้วใช้ stoul() พารามิเตอร์ฐาน 16 แปลงเป็นค่าตัวเลข จากนั้นแปลงเป็น char และต่อเข้ากับสตริงผลลัพธ์

ตัวอย่าง input "6176656e67657273" แทนค่า ASCII ของ "avengers" โดยที่ 61='a', 76='v', 65='e', 6e='n', 67='g', 65='e', 72='r', 73='s'