问题解决了!感谢@ewindes!我可能会与亩项目走得更远! Notepad ++ Hex Editor插件v0.9.5中的错误。我打开WinHex和Xplore,然后看到 79 00 00 10 。我相信也很匹配...
我希望在十六进制编辑器中看到 79 00 00 10 ,但请参阅 79 e1 80 80 。 在mingw 5.3.0中使用代码块。尝试使用Visual Studio 10并获得了相同的结果。
为什么不能正确保存变量?
代码很简单,看起来很正确:
#include <iostream>
#include <fstream>
#include <stdint.h>
using namespace std;
const uint32_t uid1 = 0x10000079;
int main()
{
std::fstream fs;
fs.open("e32.exe", std::fstream::trunc | std::fstream::binary | std::fstream::out);
fs.write((const char*)&uid1, sizeof(uid1));
fs.close();
cout << "Hello world!" << endl;
cout << "sizeof(uid1): " << sizeof(uid1) << endl;
return 0;
}
我更多地使用代码,但结果却很奇怪。文件“测试”包含上述废话:
FILE *fp;
if((fp=fopen("test", "wb"))==NULL) {
printf("Cannot open file.");
return 1;
}
char *data = (char *)&uid1;
fwrite(&data[0], 1, 1, fp);
printf("data[0] %x\n", data[0]);
fwrite(&data[1], 1, 1, fp);
printf("data[1] %x\n", data[1]);
fwrite(&data[2], 1, 1, fp);
printf("data[2] %x\n", data[2]);
fwrite(&data[3], 1, 1, fp);
printf("data[3] %x\n", data[3]);
fclose (fp);
但是uid1包含有效数据:
data[0] 79
data[1] 0
data[2] 0
data[3] 10
答案 0 :(得分:0)
Notepad ++ Hex Editor插件v0.9.5中的错误。我打开WinHex和Xplore,然后看到79 00 0010。我相信这也很匹配...