【问题标题】:How to directly write binary data in a file in c++ [closed]如何在c ++中直接将二进制数据写入文件[关闭]
【发布时间】:2020-10-03 12:49:26
【问题描述】:

我正在做一个项目(Huffman Coding),在这里我需要将 1 和 0 直接写入二进制文件。我该怎么做?

【问题讨论】:

  • 看看std::ofstream
  • 无法将单个位写入文件。在写出它们之前,您需要将它们打包成(至少)单个字节。
  • 好的,谢谢,这可能有用!

标签: c++ compression binaryfiles


【解决方案1】:

您需要在整数缓冲区中累积位,然后在至少有八个字节后写出一个字节。例如,初始化:

int buf = 1;

插入一位(bit 必须为 0 或 1):

buf = 2 * buf + bit;
if (buf > 255) {
    cout << (char)buf;
    buf = 1;
}

完成后,请务必在最后写出任何剩余的位:

if (buf > 1)
    cout << buf;

请注意,如果您使用的是 Windows,则必须以二进制形式打开输出文件(使用 ios::out | ios::binary),或者在打开后将其转换为二进制模式。对于上面使用的cout,您可以:

_setmode(_fileno(stdout), _O_BINARY);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 2011-05-29
    • 2014-10-05
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    相关资源
    最近更新 更多