1

如何将二进制转换回字符串?

std::string test1("Hello");
std::bitset<8> test2;
test2 = std::bitset<8>(test1.c_str()[0]);

std::cout << test2 << std::endl;
std::string test3=test2.to_string<char,std::char_traits<char>,std::allocator<char> >(); 
std::cout << test3 << std::endl;

这将输出:01001000 01001000

我如何输出回“你好”?

4

1 回答 1

4

std::bitset<8>分明无法容纳这个世界"Hello"。毕竟,你只代表 8 位。您可以做的是将每个转换char为 a std::bitset<8>(假设char是 8 位,当然,这通常是这种情况,但不能保证)并std::bitset<8>使用to_ulong(). 将由此获得的这个值转换为char应该产生原始字符:

std::bitset<8> c(test1[0]);
std::cout << "c=" << c << " char(c.to_ulong())=" << char(c.to_ulong()) << "\n";

"Hello"回来,您需要更大的std::bitset<N>,并且您需要确保提取正确的位以重新组装正确的单个字符。

于 2012-11-04T15:12:52.060 回答