C++ 将字节写入文件

C++ writing byte to file

我正在尝试用 C++ 将一个字节写入一个文件。当我保存它时,它是 8 个字节大,而不是 1 个字节。我怎样才能恰好保存一个字节?

ofstream binFile("compressed.bin", ios::out | ios::binary);
bitset<8> a("10010010");
binFile << a;

ls -la 的输出:

.rw-r--r-- name staff   8 B  Sat Dec  4 23:26:18 2021  compressed.bin

如何将它缩小到一个字节?

operator << 专为 格式化 输出而设计。

写严格二进制时,你应该关注成员函数put (for one byte) or write(对于可变字节数)。

这会将您的位集写入单个字节。

binFile.put( a.to_ulong() );

我不确定 class bitset 是什么,但它似乎在下面创建了一个 uint64_t。也许模板参数是字节数而不是位数?

我可以用

实现单字节二进制文件
std::ofstream binFile("onebyte.bin", std::ios::out | std::ios::binary);
uint8_t aByte = 0x77; // this is w in ASCII. Easy to see in a bin file
binFile << aByte;

也许您需要将 bitset 转换为 uint8_t?