如果我有bitset<16> bits(*iter)
和我的短片
我怎么能把这个拳头分配给我的短片?
short myShort = ??bits??
可以转换位集&lt; 16&gt;。简短?
答案 0 :(得分:4)
你真的应该使用无符号短路,以避免高位上的语言怪癖。
unsigned short myShort = (unsigned short)bits.to_ulong();
答案 1 :(得分:2)
我会使用to_ulong
方法,然后转换结果(因为你知道只会使用最低的16位):
short myShort = static_cast<short>( bits.to_ulong() );
答案 2 :(得分:2)
正如其他人所说,to_ulong
会奏效。直到我查看标准,C ++03§23.3.5/ 3,
当在类bitset的对象和某个整数类型的值之间进行转换时,位位置
pos
对应于位值1 << pos
。对应于两位或更多位的积分值是它们的位值之和。
因此,您可以将to_ulong
转换为unsigned short
(或者更好,uint16_t
),而无需担心溢出或字节序。
答案 3 :(得分:0)
答案 4 :(得分:0)
bitset<16> b;
...
short myShort = (short)b.to_ulong();