C++ 将位集转换为ASCII字符串
如何将二进制文件转换回字符串C++ 将位集转换为ASCII字符串,c++,string,bitset,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
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;
std::stringtest1(“Hello”);
std::位集test2;
test2=std::位集(test1.c_str()[0]);
std::cout你的std::bitset
显然无法容纳世界“你好”
。毕竟,您只代表8位。您可以做的是将每个char
转换为std::bitset
(当然,假设char
为8位,这是典型的情况,但不能保证),并使用to_ulong()
将std::bitset
作为整数返回其值。将由此获得的值转换为char
应产生原始字符:
std::bitset<8> c(test1[0]);
std::cout << "c=" << c << " char(c.to_ulong())=" << char(c.to_ulong()) << "\n";
std::位集c(test1[0]);
std::cout你的std::bitset
显然无法容纳世界“你好”
。毕竟,您只代表8位。您可以做的是将每个char
转换为std::bitset
(当然,假设char
为8位,这是典型的情况,但不能保证),并使用to_ulong()
将std::bitset
作为整数返回其值。将由此获得的值转换为char
应产生原始字符:
std::bitset<8> c(test1[0]);
std::cout << "c=" << c << " char(c.to_ulong())=" << char(c.to_ulong()) << "\n";
std::位集c(test1[0]);
std::cout如果您不确定std::bitset
中的N,则可以使用boost::dynamic\u bitset
如果您不确定std::bitset
中的N,则可以使用boost::dynamic\u bitset