Мне трудно понять, что делают внутри boost:::dynamic_bitset или std::vector. Что я в конечном итоге хочу сделать, так это составить сетевой фрейм и отправить его через сокет, но я просто не могу преобразовать их таким образом, чтобы сохранить порядок битов, который я собрал...
#include <iostream>
#include<stdio.h>
#include "boost/dynamic_bitset.hpp"
int main()
{
boost::dynamic_bitset<> b(8, 10); // 8 Bits, value 10
std::cout << "b = " << b << std::endl; // as expected
printf("Vector size: %i\n", b.size());
printf("Bits: %d", b); // ?
return 0;
}
Я понимаю, что класс перегрузил оператор потока ‹‹, поэтому у меня правильный вывод, в то время как printf, кажется, показывает необработанную структуру. Мне кажется даже не детерминированным (ниже неоднократно выполнялся один и тот же .exe без перекомпиляции):
Мои вопросы:
- Что происходит в основном под капотом? Судя по всему, это вообще не сравнимо с массивом.
- Как я могу отправить такой набор битов через сокет send()?
int
, в спецификаторprintf
%d
является неопределенным поведением. - person aschepler   schedule 06.09.2016