簡體   English   中英

如何在c ++中將bitset轉換為short?

[英]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_ulongunsigned short (或者更好的是, uint16_t ),而不必擔心溢出或字節序。

bitset<16> b;
...   
short myShort = (short)b.to_ulong();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM