如果我有一個bitset<16> bits(*iter)
和一個我的短 我怎麼可以分配這個bist到我的短?如何將bitset轉換爲C++中的short?
short myShort = ??bits??
這是可能的轉換bitset < 16>短?
如果我有一個bitset<16> bits(*iter)
和一個我的短 我怎麼可以分配這個bist到我的短?如何將bitset轉換爲C++中的short?
short myShort = ??bits??
這是可能的轉換bitset < 16>短?
你真的應該使用一個unsigned short來避免高位上的語言怪癖。
unsigned short myShort = (unsigned short)bits.to_ulong();
我會用to_ulong
方法對於這一點,並把結果(因爲你知道,只有最低的16位將被使用):
short myShort = static_cast<short>(bits.to_ulong());
bitset<16> b;
...
short myShort = (short)b.to_ulong();
正如其他人所說,to_ulong
將工作。我有些疑問,直到我看了標準,C++ 03§23.3.5/ 3,
, ,是否保證位順序。當在類位集的對象和某些整型,位位置
pos
對應於位值1 << pos
。對應於兩位或更多位的整數值是它們位值的和。
所以,你可以沒有關於溢出或字節序的憂慮投to_ulong
到unsigned short
(或更好,但uint16_t
)。
+1實際閱讀的東西。 –