Я работаю над разбором сетевого потока данных, мне интересно, можно ли каким-либо образом сопоставить поток данных напрямую с структурой данных.
Например, я хочу определить структуру данных для протокола RTP следующим образом.
class RTPHeader
{
int version:2; // The first two bits is version.
int P:1; // The next bits is an field P.
int X:1;
int CC:4;
int M:1;
int PT:7;
int sequenceNumber;
int64 timestamp;
.....
};
И используя его таким образом.
RTPHeader header;
memcpy(&header, steamData, sizeof(header));
Но поскольку компилятор С++ будет вставлять дополнения между членами, есть ли способ контролировать это, чтобы никакие дополнения не добавлялись между членами (включая члены битового поля)?
Этот вопрос НЕ является дубликатом Как избавиться от заполнения байтов между элементами данных структуры, потому что в моем примере могут быть битовые поля.