gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:14:08 26 4
gpt4 key购买 nike

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

我尝试过的:

  • Outputting a Binary String to a Binary File in C++ - 这是一个很好的解决方案,但是,据我所知,我将有多个不同大小的字符串,并且位集在运行时需要一个大小。
  • Stanford C++ 库有一个可以工作的 writebit 函数,但这需要很长时间,因为每个位都会打开一个写函数。
  • 实现 outputfile.write() 的不同方式,但它们都写入 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
}

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

关于c++ - 将大二进制字符串写入二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58122392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com