Перевод bool[16] (bin) в unsigned short (oct)

Имеется bool cw[16] надо перевести его в 8-ый код для вывода на монитор.

Какие есть для этого функции или библиотеки?


Ответы (1 шт):

Автор решения: gbg
#include <iostream>
#include <bitset>   //ключ к решению всех проблем
using namespace std;

int main() 
{
    constexpr size_t length = 16;  //длина массива
    bool input[length]={0};

    bitset<length> bits;
    //пока ничего интересного - копируем наш массив в bitset
    for(size_t i=0;i<length;++i )
    {
        bits[i]=input[i];
    }
    //вся магия тут - мы пользуемся тем, что cout можно переключить 
    //на вывод чисел в восьмеричной системе при помощи модификатора
    //oct, а также тем, что можно получить числовое представление того, 
    //что лежит в bitset
    cout << oct << bits.to_ulong() << endl;
    return 0;
}

Ideone

Мануал

→ Ссылка