如何将字符串转换为十六进制并将该十六进制值存储到 C++ 中的字符串中

How to convert a string into a hexadecimal and store that hexadecimal value into a string in c++

我想将十六进制值存储到一个字符串中,但是当我的字符串在打印出来时没有给我十六进制值时,我不知道该怎么做。我很确定它与十六进制有关,但我不知道如何获取那些打印出正确的十六进制值的 int 值,以便在不更改的情况下将其存储到字符串中。

我尝试了不同的方法来处理这个问题并在网上进行了搜索,但没有找到解决这个问题的方法。

#include <iostream>
#include <string>
#include <sstream>
#include <iterator>
#include <iomanip>
#include <vector>
#include <stdlib.h>

using std::cout;
using std::endl;
using std::string;
using std::hex;
using std::stringstream;

using namespace std;

int main(){
        string s2 = "HelloWorld";

        cout << "string: " << s2 << endl;
        cout << "hexval: ";
        vector<int> character; // converting each character to its ascii value
        string bytes;
        for(int i = 0; i < s2.size(); i++) {
            character.push_back(int(s2[i]));
            bytes = to_string(character.at(i));
            cout << hex << character.at(i) << " ";
            cout << bytes << endl;
        }
        cout << endl;
        cout << bytes << endl;
        
    return 0;
}

这是 'bytes' 我的字符串打印出来的输出:

48 72
65 101
6c 108
6c 108
6f 111
57 87
6f 111
72 114
6c 108
64 100

左边是十六进制,右边是字符串。两种不同的价值观。如何将这些从字符串转换为十六进制值的十六进制值存储为字符串?

我看到了两种不同的方式:

第一个使用 char 数组并用 sprintf%X 写入它。

第二种方法使用 stringstream 并使用 hex 说明符将 int 值流式传输到其中。可以用stringstream.

.str()方法获取字符串
#include <iostream>
#include <string>
#include <sstream>
#include <iterator>
#include <iomanip>
#include <vector>
#include <stdlib.h>

using std::cout;
using std::endl;
using std::string;
using std::hex;
using std::stringstream;

using namespace std;

int main(){
    string s2 = "HelloWorld";

    cout << "string: " << s2 << endl;
    string result;
    for(int i = 0; i < s2.size(); i++) {
        char buffer[20];
        sprintf(buffer, "%X ", s2[i]);
        result += buffer;
    }
    cout << "hexval1: " << result << endl;

    stringstream res;
    for (int val : s2)
        res << hex << val << " ";

    cout << "hexval2: " << res.str() << endl;

    return 0;
}