将大二进制字符串写入二进制文件

Writing a large binary string to a binary file

我有一个大的(122k 长度)0 和 1 字符串 (010011101...),需要将其作为 0 和 1 而不是它们的字符表示形式写入二进制文件。

我尝试过的:

理想情况下,我宁愿使用标准库。提前感谢您的帮助。

您可以将每个八位组合成一个字符:

int n = 0;
uint8_t value = 0;
for(auto c : str)
{
    value |= static_cast<unint8_t>(c == '1') << n;
    if(++n == 8)
    {
        // print value or buffer it elsewhere, if you want
        // to print greater chunks at once
        n = 0;
        value = 0;
    }
}
if(n != 0)
{
    // one partial byte left
}

字节有固定的位数(通常为八位),您不能丢弃它们,它们进入您的文件。所以你需要一些方法来指定,当再次解码时,要丢弃多少位。您可以附加一个额外的字节,最后一个字节中有多少位有效,您可以通过某种方式对总位数进行编码(并可以检查是否已读取足够的字节),...