我通過網絡傳輸一個字符/字節數組。它包含一個頭文件和一些數據。我想將頭部映射到一個結構體上。這裏是一個例子:將一個字節數組反序列化爲一個結構
#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;
}
這將始終工作假設結構從不包含任何可變長度字段?有沒有一個平臺獨立/慣用的方式做到這一點?
注:
我所看到的,讓你序列化/反序列化在互聯網上相當多的庫,但我得到的印象是,如果它已經奔先前相同的庫序列化,他們只能反序列化的東西。那麼,我無法控制傳輸的格式。我肯定會得到一個字節/字符數組,其中所有的值都會緊跟在一起。
關於迭代結構字段:您是否必須使用結構?我在問,因爲用元組替換它將允許迭代字段。 – 2009-02-06 14:05:24