我有一个二进制数据向量,并希望将其转换为字符串。我怎样才能完成这项任务。只是为了清楚我并没有想要一个只有1和0的字符串。我想要它,以便每8个条目等于一个字符。
答案 0 :(得分:2)
迭代这些位并使用按位运算符将它们放入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;
}