पर deserialize मुझे नेटवर्क पर एक संचरण मिलता है जो वर्ण/बाइट्स की एक सरणी है। इसमें एक हेडर और कुछ डेटा शामिल है। मैं हेडर को एक स्ट्रक्चर पर मैप करना चाहता हूं। यहां एक उदाहरण दिया गया है:एक बाइट सरणी को एक संरचना
#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;
}
क्या यह हमेशा काम करेगा कि संरचना में कभी भी कोई चर लंबाई लंबाई नहीं है? क्या ऐसा करने का कोई मंच स्वतंत्र/बेवकूफ तरीका है?
नोट:
मैं इंटरनेट आप को क्रमानुसार/deserialize जाने उस पर काफी कुछ पुस्तकालयों देखा है, लेकिन मैं धारणा है कि वे केवल कुछ deserialize कर सकते हैं अगर यह बेन पहले से ही पुस्तकालय के साथ धारावाहिक है मिल । खैर, मेरे पास ट्रांसमिशन के प्रारूप पर कोई नियंत्रण नहीं है। मैं निश्चित रूप से एक बाइट/चार सरणी प्राप्त करने जा रहा हूं जहां सभी मान एक-दूसरे पर चलते हैं।
संरचना क्षेत्रों पर पुनरावृत्ति के बारे में: क्या आपको संरचना का उपयोग करना है? मैं पूछ रहा हूं क्योंकि इसे एक ट्यूपल द्वारा प्रतिस्थापित करने से खेतों के पुनरावृत्ति की अनुमति मिल जाएगी। –