-1

文字列と基本整数でユニオン配列をシリアライズ/デシリアライズする最良の方法は何ですか?

たとえば、次のようにシリアライズします。

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' は文字列を示します。serialize() は、上で説明した format で示される共用体メンバー型を持つ src の内容をバッファーにコピーします。deserialize() は buffer の内容を format で示される共用体メンバー型で dst にコピーします。これは文字通り serialize() 関数の逆です。

format は単なる識別用の文字列です (任意)

関数を実装する方法はありますか?また、アーキテクチャ間で移植可能にする方法は?

ありがとう!

4

1 に答える 1

3

最も簡単な方法は、すべてを文字列表現に出力することです。バイナリ表現を行わないでください。表現、配置、またはパディングについて心配する必要はありません。

次に、文字列を整数関数 (atoi など) に使用して、逆シリアル化ルーチンで数値表現に戻します。

これは最も効率的な方法ではありませんが、通常は最も重要なことではありません。まず、物事を正しく行うことが最も重要です。そして、それが十分でない場合は、それを改善することを心配してください。

iThis is a string
n234234
n8292
iMore Stuff
n-92

これはあなたが言っていたことだと思います、そしてそれはあなたにとってうまくいくはずです.

于 2013-05-19T07:14:28.327 に答える