[英]C++ writing byte to file
我正在尝试将一个字节写入 C++ 中的文件。 当我保存它时,它是 8 字节大,而不是 1 字节。 我怎样才能准确地保存一个字节?
ofstream binFile("compressed.bin", ios::out | ios::binary);
bitset<8> a("10010010");
binFile << a;
ls -la 的 Output:
.rw-r--r-- name staff 8 B Sat Dec 4 23:26:18 2021 compressed.bin
我怎样才能把它缩小到一个字节?
operator <<
专为格式化的output 设计。
在编写严格的二进制文件时,您应该关注成员函数put
(用于一个字节)或write
(用于可变字节数)。
这会将您的位集写入单个字节。
binFile.put( a.to_ulong() );
我不确定 class bitset<size_t> 是什么,但它似乎在下面创建了一个 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?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.