将大型二进制字符串写入二进制文件
Writing a large binary string to a binary file
我有一个大的(122k长(0和1s(010011101...(字符串,需要以0和1的形式写入二进制文件,而不是它们的字符表示。
我尝试过:
- 将二进制字符串输出到二进制文件 C++ - 这是一个很好的解决方案,但是,据我所知,我将有多个不同大小的字符串,并且 bitset 在运行时需要一个大小。
- 斯坦福C++库有一个可以工作的写位函数,但这需要很长时间,因为每个比特都会打开一个写函数。
- 实现 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++ 中将二进制文件读取为字符串
- 在C++中使用 fread 从二进制文件中读取字符串及其长度
- C++实现代码中的字符串不应存在于输出二进制文件中.如何解决
- 无法使用 fstream 从二进制文件中读取字符串,而是显示奇怪的符号
- C 字符串到C char数组,以写入二进制文件
- 将"8 bit"(字节)字符串写入二进制文件?
- 我正在尝试读取一个包含字符串和整数的二进制文件..并打印出与字符串对应的整数
- 从二进制文件 C++ 读取的字符串数组写入
- 如何在 c++ 中使用二进制文件输入/输出读取/写入结构的字符串类型成员
- 将从二进制文件读取的字符串转换为整数
- 将 int 的二进制文件读取到字符串 c++
- 在二进制文件中读取字符串C
- C/C++ 读取具有多个字符串和字符的二进制文件
- 调试读/写字符串到二进制文件
- 如何用C++递归地从二进制文件中读取自定义字符串
- 将二进制字符串写入二进制文件