9

私はビットセット<8>v8を持っていて、その値は「11001101」のようなものですが、どうすればそれをcharに変換できますか?一文字必要です。文字「f」=01100110のように。

PS助けてくれてありがとう。ビット単位のランダムエラーを説明するためにこれが必要でした。たとえば、エラーfがなく、エラーがある場合は♥など、ファイル内のすべてのテキストが含まれます。テキストでは、そのようなエラーをはっきりと見ることができます。

4

2 に答える 2

12
unsigned long i = mybits.to_ulong(); 
unsigned char c = static_cast<unsigned char>( i ); // simplest -- no checks for 8 bit bitsets

上記の線に沿った何かが機能するはずです。ビットフィールドには、プレーンを使用して表すことができない値が含まれている可能性があることに注意してくださいchar(署名されているかどうかは実装によって定義されます)。したがって、キャストする前に常に確認する必要があります。

char c;
if (i <= CHAR_MAX) 
c = static_cast<char>( i );
于 2012-06-17T01:44:25.673 に答える
0

提供されたソリューションは私にはうまくいきませんでした。私はg++9でC++14を使用していましたが、次の方法で取得できました。

char lower = 'a';
bitset<8> upper(lower);
upper.reset(5);
cout << (char)upper.to_ulong() << endl;

これはそれを行うための最良の方法ではないかもしれません、私は確信しています、しかしそれは私のために働きました!

于 2020-06-28T11:19:31.840 に答える