Chuyển đổi 1 std::string mang định dạng ISO88591, UTF8, UTF16BE, UTF16LE, UTF16 sang Hex và ngược lại

Chào mọi người,
Em là 1 lập trình viên mới trong lĩnh vực C++ và em muốn hỏi mọi người là có cách nào để có thể encode từ 1 chuỗi được định dạng sẵn từ ISO88591, UTF8, UTF16BE, UTF16LE, UTF16 sang chuỗi hex được không ạ? Tới thời điểm hiện tại thì em đã hoàn thành xong rồi nhưng vẫn còn 1 vấn đề là em không thể encode được các chuỗi có chữ tiếng Việt ạ.
Encode

int n = s.length();
    for (int i = 0; i < n; i++)
    {
        wchar_t c = s[i];   
        long long val = long long(c);
        std::cout << val << std::endl;
        std::wstring bin;
        while (val > 0)
        {
            (val % 2) ? bin.push_back('1') :
                bin.push_back('0');
            val /= 2;
        }

        reverse(bin.begin(), bin.end());
        std::wcout << bin << std::endl;
        result->append(convertBinToHex(bin));
    }

Decode

int size = hex.length();
    std::string ascii = "";
    for (size_t i = 0; i < hex.length(); i += 4)
    {
        std::string part = hex.substr(i, 2);
        char ch = std::stoul(part, nullptr, 16);
        ascii += +ch;
    }
    return ascii;
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?