私はネットワーク データ ストリームの解析に取り組んでいます。データ ストリームをデータ構造に直接マップする方法があるかどうか疑問に思っています。
たとえば、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));
しかし、C++ コンパイラはメンバー間にパディングを挿入するため、メンバー (ビット フィールド メンバーを含む) 間にパディングが追加されないように制御する方法はありますか?
私の例ではビットフィールドが存在する可能性があるため、この質問は構造体のデータメンバー間のパディングバイトを取り除く方法の複製ではありません。