Можно ли преобразовать набор битов <8> в массив символов целых чисел? - PullRequest
1 голос
/ 15 февраля 2011

У меня есть bitset<8> v8, и его значение что-то вроде "11001101", что-то в двоичном виде, как мы можем преобразовать его в массив символов или целых чисел в C ++?

Ответы [ 2 ]

2 голосов
/ 15 февраля 2011

Чтобы преобразовать в массив char, вы можете использовать функцию bitset::to_string(), чтобы получить строковое представление, а затем скопировать отдельные символы из этой строки:

#include <iostream>
#include <algorithm>
#include <string>
#include <bitset>
int main()
{
        std::bitset<8> v8 = 0xcd;

        std::string v8_str = v8.to_string();
        std::cout << "string form: " << v8_str << '\n';

        char a[9] = {0}; 
        std::copy(v8_str.begin(), v8_str.end(), a);
        // or even strcpy(a, v8_str.c_str());
        std::cout << "array form: " << a << '\n';
}
1 голос
/ 15 февраля 2011
vector<int> ints;
for(int i = 0 ; i < v8.size() ; i++ )
{
     ints.push_back(v8[i]);
}

Аналогично, вы можете создать массив символов. Или вы можете использовать необработанный массив как:

char chars[8];
for(int i = 0 ; i < v8.size() ; i++ )
{
     chars[i] = v8[i];
}
...