Как преобразовать двоичный файл в строку?
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
Как вывести обратно «Привет»?
Ваш 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>
и вам нужно убедиться, что вы извлекаете правильные биты, чтобы собрать правильный отдельный символ.
Других решений пока нет …