У меня есть bitset<8> v8
, и его значение что-то вроде «11001101», что-то в двоичном формате, как мы можем преобразовать его в массив символов или целых чисел в С++?
можно ли преобразовать набор битов‹8› в массив символов целых чисел?
Ответы (2)
Чтобы преобразовать в массив символов, вы можете использовать функцию 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';
}
person
Cubbi
schedule
15.02.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];
}
person
Nawaz
schedule
15.02.2011
спасибо, но если я использую cout для их отображения, это не дает правильного ответа
- person bijlikamasla; 15.02.2011
11001101
интерпретировалось? каждая цифра как один char (и один int)? - person Nawaz   schedule 15.02.2011