【发布时间】:2017-02-18 04:45:03
【问题描述】:
我的问题是我有一个十六进制表示的字符串说:
036e。我想以相同的十六进制表示形式将其写入二进制文件。我首先使用sstrtoul() 函数将字符串转换为整数。然后
我使用fwrite() 函数将其写入文件。这是我写的代码。运行此程序后,我在文件中得到以下输出:
6e03 0000
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ofstream fileofs("binary.bin", ios::binary | ios::out);
string s = "036e";
int x = strtoul(s.c_str(), NULL, 16);
fileofs.write((char*)&x, sizeof(int));
fileofs.close();
}
虽然我期望的结果是这样的:
036e
谁能解释一下我在这里做错了什么?
【问题讨论】:
-
调整您的期望,使其与现实相符。显然你正在一个小端平台上工作,其中
sizeof(int)是 4。期望 2 字节违反逻辑,就像期望大端布局一样。 -
我尝试改用
unsigned short。但它会输出一些垃圾结果。
标签: c++ file binary hex filestream