2013-05-19 77 views
-1

使用字符串和基本整數序列化/反序列化聯合數組的最佳方式是什麼?聯合數組在C/C++中的序列化/反序列化

例如,我們想要序列:

union val_u { 
int i; 
char *s; 
} 

void serialize(void *buffer, const char *format, const union val_u src[]); 
void deserialize(union val_u dst[], const char *format, const void *buffer); 

工會陣列的任意組合物通過格式字符串的 內容表示:「I」表示一個整數 而「S」表示一串。序列化()將src的內容與由上述格式表示的聯合成員 類型複製到緩衝區中。 deserialize()將緩衝區的內容複製到dst中,其格式爲 的聯合成員類型。這實際上就是serialize()函數的反向 。

格式只是用於識別(任意)

任何想法如何實現功能的字符串?另外,如何使它跨架構可移植?

謝謝!

+2

聽起來非常像一個任務。你嘗試了什麼?你在分配中不理解的是什麼?什麼是C/C++? –

+0

我要投票結束,但只是提示序列化'char *'將是一個指向數據的指針,當你反序列化時你不會關心,所以你將不得不處理字符串。 –

回答

3

最簡單的方法是將所有內容都打印到字符串表示中。不要做任何二進制表示,你不必擔心表示或對齊或填充。

然後,只需使用字符串整數函數(atoi等)將它們返回到反序列化例程中的數字表示形式。

這不是最有效的做事方式,但這通常不是最重要的事情。首先,把事情做好是最重要的。那麼,如果它不夠好,就要擔心改進它。

iThis is a string 
n234234 
n8292 
iMore Stuff 
n-92 

我想這就是你所說的,它應該適合你。