将16进制数转换为string后,写入文件,并从文件中进行读取的c++代码
时间: 2024-03-17 21:40:35 浏览: 99
C/C++ 读取16进制文件的方法
好的,以下是将16进制数转换为字符串后写入文件,并从文件中读取数据并转换为16进制数的C++代码示例:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
// 将16进制数转换为字符串
string hex2str(int hex_val) {
stringstream ss;
ss << hex << hex_val;
string hex_str = ss.str();
string str_data;
for (size_t i = 0; i < hex_str.length(); i += 2) {
string byte = hex_str.substr(i, 2);
char chr = (char) strtol(byte.c_str(), NULL, 16);
str_data.push_back(chr);
}
return str_data;
}
// 将字符串写入文件
void write_str_to_file(const string& str_data, const string& file_name) {
ofstream out_file(file_name, ios::binary);
if (out_file.is_open()) {
out_file.write(str_data.c_str(), str_data.length());
out_file.close();
}
}
// 从文件中读取字符串并转换为16进制数
int read_str_from_file(const string& file_name) {
ifstream in_file(file_name, ios::binary);
if (in_file.is_open()) {
string str_data((istreambuf_iterator<char>(in_file)), istreambuf_iterator<char>());
in_file.close();
int hex_val = stoi(str_data, nullptr, 16);
return hex_val;
}
return -1;
}
int main() {
int hex_val = 0x61626364;
string str_data = hex2str(hex_val);
write_str_to_file(str_data, "test.txt");
int read_hex_val = read_str_from_file("test.txt");
cout << read_hex_val << endl;
return 0;
}
```
上面的代码中,`hex2str()`函数将16进制数转换为字符串,`write_str_to_file()`函数将字符串写入文件,`read_str_from_file()`函数从文件中读取字符串并转换为16进制数。`main()`函数中演示了如何将16进制数转换为字符串后写入文件,并从文件中读取数据并转换为16进制数的完整过程。
阅读全文