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?
我正在尝试用 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
我可以用
实现单字节二进制文件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?