2011-11-17 20 views

cevap

4

Yüksek bitteki dil sıkışmalarını önlemek için işaretsiz bir kısaltma kullanmalısınız. (Sadece düşük 16 bit kullanılacağını bildiğimiz için)

unsigned short myShort = (unsigned short)bits.to_ulong(); 
2

Bunun için to_ulong yöntemi kullanın ve sonucu savururdum:

short myShort = static_cast<short>(bits.to_ulong()); 
0
bitset<16> b; 
... 
short myShort = (short)b.to_ulong(); 
2

Diğerlerinin dediği gibi, to_ulong çalışacaktır. I

sınıfı bit kümesi bir nesne ve bir entegre tip bir değer arasındaki dönüştürme, ben Standard'ta bakana kadar bit sırası, C++ 03 §23.3.5/3 garanti olup olmadığını bazı şüphe hissettiğini bit konumu pos, 1 << pos bit değerine karşılık gelir. İki veya daha fazla bite karşılık gelen integral değerleri, bit değerlerinin toplamıdır.

Yani, taşma veya endian hakkında hiçbir endişe ile unsigned short için to_ulong (veya daha iyisi, uint16_t) yayınlayabilirsiniz. Bir şeyleri okumak için

+0

+1. –

İlgili konular