もし私がbitset<16> bits(*iter)
と私の短い を持っていれば、私はこれを私の短さに割り当てることができますか?C++でビットセットをshortに変換するにはどうすればよいですか?
short myShort = ??bits??
それは短いにビットセット< 16>を変換することが可能ですか?
もし私がbitset<16> bits(*iter)
と私の短い を持っていれば、私はこれを私の短さに割り当てることができますか?C++でビットセットをshortに変換するにはどうすればよいですか?
short myShort = ??bits??
それは短いにビットセット< 16>を変換することが可能ですか?
上位ビットの言語の癖を避けるには、実際には符号なしのshortを使用する必要があります。 (あなたが唯一の最下位16ビットが使用されることを知っているので)
はunsigned short myShort = (unsigned short)bits.to_ulong();
私はこのためにto_ulong
メソッドを使用し、その結果をキャストしたい:
short myShort = static_cast<short>(bits.to_ulong());
bitset<16> b;
...
short myShort = (short)b.to_ulong();
他の人が言っているように、to_ulong
が動作します。 I標準を見まで、クラスビットセットのオブジェクトといくつかの一体型の値との間で変換するとき、私は、C++ 03§23.3.5/ 3、
をビット順序が保証されたかどうか、いくつかの疑問を感じましたビット位置
pos
はビット値1 << pos
に対応します。 2つ以上のビットに対応する整数値は、それらのビット値の合計である。
だから、あなたは、オーバーフローやエンディアンについて心配ないとunsigned short
からto_ulong
(またはより良いまだ、uint16_t
)をキャストすることができます。
実際に物事を読んで+1。 –