2013-10-25 3 views
9

В C++. Я инициализировать BitSet до -3, как:преобразовать биты в int в C++

std::bitset<32> mybit(-3); 

Есть ли благодать так, что конвертировать mybit в -3. Beacause у битового объекта есть только методы, такие как to_ulong и to_string.

+2

Преобразование его в беззнаковое долго, затем отливали, что междунар. – Barmar

+0

Как говорится в [документации] (http://en.cppreference.com/w/cpp/utility/bitset), 'std :: bitset' имеет функцию преобразования значения в ulong. Так, как говорит @Barmar, произведите это до конца. Так в чем проблема? Вы прочитали документацию или попробовали что-либо перед отправкой вопроса? – Manu343726

+1

@Johnsyweb Он, вероятно, хочет обрабатывать отрицательные значения, как показывает его пример. – Kaidjin

ответ

18

Используйте to_ulong, чтобы преобразовать его в unsigned long, а затем обычный литой, чтобы преобразовать его в int.

int mybit_int; 

mybit_int = (int)(mybit.to_ulong()); 

DEMO

+0

благодарим вас за подробный ответ @Barmar. – tenos

+13

Поскольку это C++, я бы предложил использовать [static_cast (mybit.to_ulong())] (http://stackoverflow.com/questions/103512/in-c-why-use-static-castintx-instead-of-intx), а не в стиле C. – Steve

+0

не работает, все еще выплевывая беззнаковое целое число. -3 становится 251 – FluorescentGreen5

Смежные вопросы