此代码创建的文件大小为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));