บทนำ
ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมที่แปลงสตริงค่า 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'