c++ - 我可以在 C++ 中输入/输出位吗

标签 c++ bit-manipulation bit

我正在弄清楚如何压缩文件,我想知道我是否可以对输出文件进行位操作。

Current 我有一个可变大小 n 的字符串,它只包含 0 和 1。 例如:010111001010110

我想输出一个只包含 n 位而不是 n 个字符的文件。

此外,如果可能的话,我怎样才能读回这些位并将其转换回字符串?

谢谢。

更新:如果我不能直接写出位而必须将其打包成字节,是否意味着我可以将 8 位转换为一个字符并只输出一个字符列表?如果是这样,如果我尝试存储“00000000”(表示空值)会怎样?

最佳答案

你不能直接把位写出来,你至少得把它们打包成八位。是的,这意味着写出字节。请注意,输出实际上将被填充为字节,您必须对此采取一些措施。

要将包含 0 和 1 的字符串转换为原始数据,最简单的方法是使用 std::bitset,如果您知道长度,或者编写一个按 8 位递增的循环,如

for (auto i = 0; i < str.size(); i += 8)

关于c++ - 我可以在 C++ 中输入/输出位吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23943146/

相关文章:

algorithm - 将第 n 位位添加到 int 的最有效方法

C++ 如何在没有前面参数的情况下使用省略号

c++ - 使用 C/C++ 编写隐写术应用程序

JavaScript 和位运算符

c - float 的按位乘法

c - 如何从存储在字节数组中的字节中检索值?

c++ - 如何使用具有循环依赖性的组件模式正确使用多态性?

python - 使用 Cython 时如何将一个 C++ 类(引用)传递给另一个类?

swift - 在 Swift 中获取 bool 的位模式

c - 从文件中读取位时 `16 longs` 和 `110 words` 的含义是什么