如何将字符串转换为十六进制并将该十六进制值存储到 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;
}
我想将十六进制值存储到一个字符串中,但是当我的字符串在打印出来时没有给我十六进制值时,我不知道该怎么做。我很确定它与十六进制有关,但我不知道如何获取那些打印出正确的十六进制值的 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;
}