5

ショートパンツを持っている場合bitset<16> bits(*iter)、このビストをショートパンツに割り当てるにはどうすればよいですか?

short myShort = ??bits??

ビットセット<16>をshortに変換することは可能ですか?

4

5 に答える 5

6

ハイビットでの言語の癖を避けるために、実際にはunsignedshortを使用する必要があります。

unsigned short myShort = (unsigned short)bits.to_ulong();
于 2011-11-17T11:01:53.037 に答える
2

この方法を使用してto_ulong、結果をキャストします(最下位の16ビットのみが使用されることがわかっているため)。

short myShort = static_cast<short>( bits.to_ulong() );
于 2011-11-17T11:02:37.613 に答える
2

他の人が言ったように、to_ulong動作します。標準、C++03§23.3.5/3を見るまで、ビット順序が保証されているかどうか疑問を感じていました。

クラスbitsetのオブジェクトとある整数型の値の間で変換する場合、ビット位置posはビット値に対応します1 << pos。2つ以上のビットに対応する整数値は、それらのビット値の合計です。

したがって、オーバーフローやエンディアンの心配をせずto_ulongunsigned short(またはさらに良いことに)キャストできます。uint16_t

于 2011-11-17T12:19:45.507 に答える
0

http://new.cplusplus.com/reference/stl/bitset/to_ulong/を使用しますto_ulong

于 2011-11-17T11:04:12.953 に答える
0
bitset<16> b;
...   
short myShort = (short)b.to_ulong();
于 2011-11-17T11:04:39.247 に答える