将bitset转换为ASCII字符串

时间:2012-11-04 15:02:28

标签: c++ string bitset

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

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

如何输出“Hello”?

1 个答案:

答案 0 :(得分:3)

std::bitset<8>显然无法占领世界"Hello"。毕竟,你只代表8位。您可以做的是将每个char转换为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>,并且您需要确保提取正确的位以重新组合正确的个性。