文字/バイトの配列であるネットワーク経由の送信を取得します。ヘッダーといくつかのデータが含まれています。ヘッダーを構造体にマップしたいと思います。次に例を示します。
#pragma pack(1)
struct Header
{
unsigned short bodyLength;
int msgID;
unsigned short someOtherValue;
unsigned short protocolVersion;
};
int main()
{
boost::array<char, 128> msgBuffer;
Header header;
for(int x = 0; x < sizeof(Header); x++)
msgBuffer[x] = 0x01; // assign some values
memcpy(&header, msgBuffer.data(), sizeof(Header));
system("PAUSE");
return 0;
}
構造体に可変長フィールドが含まれていないと仮定すると、これは常に機能しますか? これを行うプラットフォームに依存しない/慣用的な方法はありますか?
ノート:
シリアル化/逆シリアル化を可能にするライブラリをインターネット上でかなり見てきましたが、以前に同じライブラリでシリアル化されている場合にのみ、何かを逆シリアル化できるという印象を受けました。ええと、私は送信の形式を制御できません。私は間違いなく、すべての値が互いに続くバイト/文字配列を取得するつもりです。