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を に変換しstd::bitset<8>(もちろん、8ビットであると仮定しcharます。これは通常の場合ですが、保証されていません)、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 に答える