2011-11-17 6 views

答えて

4

上位ビットの言語の癖を避けるには、実際には符号なしのshortを使用する必要があります。 (あなたが唯一の最下位16ビットが使用されることを知っているので)

unsigned short myShort = (unsigned short)bits.to_ulong(); 
2

私はこのためにto_ulongメソッドを使用し、その結果をキャストしたい:

short myShort = static_cast<short>(bits.to_ulong()); 
0
bitset<16> b; 
... 
short myShort = (short)b.to_ulong(); 
2

他の人が言っているように、to_ulongが動作します。 I標準を見まで、クラスビットセットのオブジェクトといくつかの一体型の値との間で変換するとき、私は、C++ 03§23.3.5/ 3、

をビット順序が保証されたかどうか、いくつかの疑問を感じましたビット位置posはビット値1 << posに対応します。 2つ以上のビットに対応する整数値は、それらのビット値の合計である。

だから、あなたは、オーバーフローやエンディアンについて心配ないとunsigned shortからto_ulong(またはより良いまだ、uint16_t)をキャストすることができます。

+0

実際に物事を読んで+1。 –

関連する問題