c++ - 将可执行文件加载到字符向量后的数据无效
问题描述
我正在尝试加载一个可执行文件(.exe),vector<char>
但从未加载完整的数据,只有MZx字符串。怎么修?
vector<char> buffer;
ifstream infile;
infile.open("putty.exe", ios::binary);
infile.seekg(0, ios::end);
size_t file_size_in_byte = infile.tellg();
buffer.resize(file_size_in_byte);
infile.seekg(0, ios::beg);
infile.read(&buffer[0], file_size_in_byte);
infile.close();
cout << buffer.data() << endl;
ofstream ofs("data.bin", ofstream::out);
ofs << buffer.data();
ofs.close();
解决方案
给定vector<char> buffer
然后buffer.data()
返回一个char*
。因此ofs << buffer.data()
向流发送一个 char 指针。char 指针的<<
重载将其作为字符串处理 - 以空终止符结尾的字符序列。这不是您处理任意字节集(例如 .exe 文件的内容)所需要的。所以你的输出在第一个空字节处停止。
您需要以不同的方式将数据发送到输出流。写入功能应该可以工作。例如:
ofs.write(buffer.data, buffer.size());
推荐阅读
- math - 如何减小球体中心点和点 P 之间的半径并找到点 P 的新坐标?
- javascript - Angular找到一个类型的所有服务
- sql - 内部连接中的案例条件
- android - 如何从 Flutter 访问设备应用程序
- python - Python Pandas 数据框 - 组合/合并具有空值的行
- c - Ghidra 使用像“._0_4_”这样的奇怪字段名称来表示 C 反编译中的非默认访问大小
- mysql - 仅选择作者的最后一篇文章
- python - 将字符串日期转换为可用的熊猫格式
- python - 在不使用主分区键的情况下查询 DynamoDB 中的所有数据
- python - 在 Python 中组织类模块代码的更好方法