преобразовать набор битов в строку ASCII

Как преобразовать двоичный файл в строку?

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

Как вывести обратно «Привет»?

1

Решение

Ваш 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> и вам нужно убедиться, что вы извлекаете правильные биты, чтобы собрать правильный отдельный символ.

3

Другие решения

Других решений пока нет …