Em đang tìm cách Decode UTF-16 Hex tới String, nhưng tìm mãi không có cách giải quyết mong mọi người giúp đỡ.
Em xin trình bày vấn đề :
- Đầu tiên em có 2 Mã Hex:
- UTF-8 Hex : 4875E1BBB36E68204E67E1BB8D632048C3A0204D79
- UTF-16 Hex : 004800751EF3006E00680020004E00671ECD00630020004800E00020004D0079
- Kết quả decode ở trang dencode.com
Em có viết chương trình C++ để decode từ UTF-16 Hex sang String nhưng kết quả lại chạy ra không đúng, đây là chương trình của em
#include <string>
#include <sstream>
#include <fstream>
#include <iostream>
#include <ios>
int main(){
std::basic_string<uint16_t> bytes;
std::string hex = "004800751EF3006E00680020004E00671ECD00630020004800E00020004D0079";
//std::string hex = "4875E1BBB36E68204E67E1BB8D632048C3A0204D79";
for (size_t i = 0; i < hex.length(); i += 2)
{
uint16_t byte;
std::string nextbyte = hex.substr(i, 2);
std::istringstream(nextbyte) >> std::hex >> byte;
bytes.push_back(static_cast<uint8_t>(byte));
}
std::string result(bytes.begin(), bytes.end());
std::ofstream file("file.bin", std::ios::binary| std::ios::out);
if(file.is_open()) {
file<<result;
file.close();
}else{
std::cout<<"File error!!"<<std::endl;
}
std::string value = hex_to_string(hex);
std::cout<<"Value : "<<value<<std::endl;
return 0; }
Kết quả chạy từ chương trình với UTF-16 Hex
Kết quả chạy từ chương trình với UTF-8 Hex
Mong mọi người có giải pháp hay cách nào khác giúp em với ạ.
Em cảm ơn.