short myShort = ??bits??
Kısa bir Bit kümesiyle < 16> dönüştürmek mümkün olabilir?
short myShort = ??bits??
Kısa bir Bit kümesiyle < 16> dönüştürmek mümkün olabilir?
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();
Bunun için to_ulong
yöntemi kullanın ve sonucu savururdum:
short myShort = static_cast<short>(bits.to_ulong());
kullanım to_ulong
http://new.cplusplus.com/reference/stl/bitset/to_ulong/
bitset<16> b;
...
short myShort = (short)b.to_ulong();
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 konumupos
,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
+1. –