此代码创建的文件大小为2338字节

ofstream ofs("out", ios::binary);
ofs << htonl(1);
int size = sizeof(htonl(1));
for(int i = 0; i < 500; i++){
    ofs << htons((unsigned short)(sin(i/5)*1000));
    size += sizeof(htons((unsigned short)(sin(i/5)*1000)));
}
cout << "file size : " << size << endl;
ofs.close();

但是输出是“文件大小:1004”,为什么文件大小实际上不是1004字节?

最佳答案

如果在文本编辑器中打开文件,您将很快发现问题所在。

数字以十进制表示形式打印,而不是内部(二进制)表示形式。

而是使用 ostream::write :

uint32_t foo = htonl(1);
ofs.write(reinterpret_cast<char*>(&foo), sizeof(foo));

09-04 16:04