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

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

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

另外,如果可能的话,我该如何读回这些位并将其转换回字符串?

谢谢。

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

最佳答案

您不能直接写出位,必须至少将它们打包成八位。是的,这意味着要写出字节。请注意,输出实际上将被填充为字节,您必须对此做一些事情。

要将包含0和1的字符串转换为原始数据,最简单的方法是使用std::bitset(如果您知道长度),或者编写一个前进八分的循环,例如

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

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

10-11 23:08
查看更多