[英]How can i convert bitset into short in c++?
如果我有一個bitset<16> bits(*iter)
和一個我的bitset<16> bits(*iter)
我怎么能把這個bist分配給我的短片?
short myShort = ??bits??
可以將bitset <16>轉換為short嗎?
你真的應該使用unsigned short,以避免高位上的語言怪癖。
unsigned short myShort = (unsigned short)bits.to_ulong();
我會使用to_ulong
方法,並轉換結果(因為你知道只會使用最低的16位):
short myShort = static_cast<short>( bits.to_ulong() );
正如其他人所說, to_ulong
將起作用。 在看到標准,C ++03§23.3.5/ 3之前,我有點懷疑位順序是否有保證,
當在類bitset的對象和某個整數類型的值之間進行轉換時,位位置
pos
對應於位值1 << pos
。 對應於兩位或更多位的積分值是它們的位值的總和。
因此,您可以將to_ulong
為unsigned short
(或者更好的是, uint16_t
),而不必擔心溢出或字節序。
bitset<16> b;
...
short myShort = (short)b.to_ulong();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.