我有一个二进制数据 vector ,想将其转换为字符串。我怎样才能完成这个任务。需要澄清的是,我并不希望有一串只有 1 和 0 的字符串。我希望每 8 个条目等于一个字符。
最佳答案
迭代这些位并使用按位运算符将它们放入 char
值中。
这没有什么特别棘手的。如果您不熟悉按位算术,您可以尝试先用更熟悉的语言实现它,然后将其转换为 C++ 作为练习。
std::size_t divide_rounding_up( std::size_t dividend, std::size_t divisor )
{ return ( dividend + divisor - 1 ) / divisor; }
std::string to_string( std::vector< bool > const & bitvector ) {
std::string ret( divide_rounding_up( bitvector.size(), 8 ), 0 );
auto out = ret.begin();
int shift = 0;
for ( bool bit : bitvector ) {
* out |= bit << shift;
if ( ++ shift == 8 ) {
++ out;
shift = 0;
}
}
return ret;
}
关于c++ - 将 std::vector<bool> 转换为 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41456692/