Форум программистов, компьютерный форум, киберфорум
Наши страницы
Boost C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
oil
0 / 0 / 0
Регистрация: 05.10.2014
Сообщений: 18
1

Dynamic_bitset из байтов

05.10.2014, 23:17. Просмотров 870. Ответов 5
Метки нет (Все метки)

Допустим,
C++
1
2
unsigned char bytearray[];
boost::dynamic_bitset<> bitset; // это поле класса
Как bytearray конвертировать в bitset?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2014, 23:17
Ответы с готовыми решениями:

Dynamic_bitset
У меня вопрос. Хотел создать boost::dynamic_bitset&lt;&gt; bits(100 000 000), но не...

Fread(), fseek(), fwrite() - Переписка байтов
Всем привет. Такой вопрос. Есть задача пройтись по бинарному файлу с...

Сканирование байтов в памяти, и получение начального адреса байтов
Привет форумчане! У меня вопрос, как просканировать память у процесса так,...

Если увеличить объём кластера на флешке с 4048 байтов до 8192 байтов то она будет работать быстрей?
Как думаете если увеличить объём кластера на флешке с 4048 байтов до 8192...

Вычитание массива байтов из массива байтов
Добрый день. Мне нужно получить результирующий массив байтов, вычев первый...

5
Avazart
Эксперт С++
7791 / 5691 / 560
Регистрация: 10.12.2010
Сообщений: 25,910
Записей в блоге: 17
05.10.2014, 23:58 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <boost/dynamic_bitset.hpp>
 
int main()
{
    unsigned char bytes[4] = {7,5,1,5};
    boost::dynamic_bitset<unsigned char> bits(bytes,&bytes[4]);
 
    std::cout<< bits<< std::endl;
 
    getchar();
    return 0;
}
1
oil
0 / 0 / 0
Регистрация: 05.10.2014
Сообщений: 18
06.10.2014, 15:25  [ТС] 3
boost::dynamic_bitset<unsigned char> bits(bytes,&bytes[4]);
Понял о чём речь и сделал через dynamic_bitset::append. Проблема в том, что биты в блоках группируются в обратном порядке.
C++
1
2
3
4
5
6
unsigned char bytes[2] = {0, 128};
bits.append(bytes, &bytes[2]);
std::cout << bits << std::endl; // 1000000000000000 = {128, 0}
// и магия от std::cout
for(int i = 0; i < 16; ++i)
   std::cout << bits[i]; // 0000000000000001 = {0, 1} ?
Есть ли элегантный способ избежать этих эффектов?
0
Avazart
Эксперт С++
7791 / 5691 / 560
Регистрация: 10.12.2010
Сообщений: 25,910
Записей в блоге: 17
06.10.2014, 15:39 4
Ну та это вроде только вывод, а порядок вроде верный,тут как бы все относительно насчет порядка.
0
oil
06.10.2014, 15:44  [ТС]
  #5

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение
Ну так выводит в обратном порядке, какая проблема?
"обисапс ,ко"

0
Avazart
Эксперт С++
7791 / 5691 / 560
Регистрация: 10.12.2010
Сообщений: 25,910
Записей в блоге: 17
06.10.2014, 15:54 6
Лучший ответ Сообщение было отмечено oil как решение

Решение

Да как-то не так он добавляет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
    unsigned char bytes[2] = {5, 7};
    std::vector<unsigned char> vbytes(bytes,bytes+2);
 
    boost::dynamic_bitset<unsigned char> bits;
    bits.append(vbytes.rbegin(), vbytes.rend());
 
    std::cout << bits << std::endl;
     // 00000101 00000111
 
    // Сдвиг влево для теста
    std::cout << (bits<<1) << std::endl;
    // 00001010 00001110
1
06.10.2014, 15:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2014, 15:54

Поиск байтов
Ребят такая проблема есть delphi 2010 и delphi 7 в обоих версиях создавался...

Массивы байтов
Добрый день. Есть такое. procedure TForm1.Button5Click(Sender: TObject); ...

Чтение байтов
Ребят, здравствуйте , nомогите разобраться , есть бинарный файл , в нем данные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru