Debugging 将十六进制字符串写入c++;文件流 如果我想用C++来写一个二进制文件(例如,它是十六进制格式),例如, #include <fstream> #include <iostream> using namespace std; int main() { int num = 0xabcd; ofstream outfile("tmp.bin", ios::out | ios::binary); outfile.seekp(0x8000, ios_base::beg); outfile.write(num, sizeof(num)); return 0; } #包括 #包括 使用名称空间std; int main() { int num=0xabcd; 流输出文件(“tmp.bin”,ios::out | ios::binary); outfile.seekp(0x8000,ios_base::beg); write(num,sizeof(num)); 返回0; }

Debugging 将十六进制字符串写入c++;文件流 如果我想用C++来写一个二进制文件(例如,它是十六进制格式),例如, #include <fstream> #include <iostream> using namespace std; int main() { int num = 0xabcd; ofstream outfile("tmp.bin", ios::out | ios::binary); outfile.seekp(0x8000, ios_base::beg); outfile.write(num, sizeof(num)); return 0; } #包括 #包括 使用名称空间std; int main() { int num=0xabcd; 流输出文件(“tmp.bin”,ios::out | ios::binary); outfile.seekp(0x8000,ios_base::beg); write(num,sizeof(num)); 返回0; },debugging,hex,filestream,binaryfiles,Debugging,Hex,Filestream,Binaryfiles,该程序不会运行,因为ostream&write()只将char*chars[]作为其第一个参数,而我需要将int类型numbernum写入二进制文件“tmp.bin” 理想的结果是,当我以十六进制模式查看“tmp.bin”时,我可以在地址0x8000处看到ab cd。我想知道这是否可能,有人能帮我吗?非常感谢。您可以将int转换为char* outfile.write((char*)&num, sizeof(num)); 注意,您可能需要根据所需的endianness对int进行字节交

该程序不会运行,因为
ostream&write()
只将
char*chars[]
作为其第一个参数,而我需要将
int
类型number
num
写入二进制文件“tmp.bin”


理想的结果是,当我以十六进制模式查看“tmp.bin”时,我可以在地址
0x8000
处看到
ab cd
。我想知道这是否可能,有人能帮我吗?非常感谢。

您可以将
int
转换为
char*

outfile.write((char*)&num, sizeof(num));

注意,您可能需要根据所需的endianness对int进行字节交换。就像魔术一样!但是你能解释一下为什么(char*)&num会将int转换成char,然后再转换成二进制int吗?这不是魔术:)没有真正的转换发生,你只是告诉编译器将num的地址解释为指向原始字节的指针,而不是指向int的指针。你只是直接从存储int的内存中写入字节。