La sérialisation/Désérialisation d'une structure à un char* en C

J'ai un struct

struct Packet {
    int senderId;
    int sequenceNumber;
    char data[MaxDataSize];

    char* Serialize() {
        char *message = new char[MaxMailSize];
        message[0] = senderId;
        message[1] = sequenceNumber;
        for (unsigned i=0;i<MaxDataSize;i++)
            message[i+2] = data[i];
        return message;
    }

    void Deserialize(char *message) {
        senderId = message[0];
        sequenceNumber = message[1];
        for (unsigned i=0;i<MaxDataSize;i++)
            data[i] = message[i+2];
    }

};

J'ai besoin de convertir ce pour un char* , longueur maximale MaxMailSize > MaxDataSize pour les transmettre sur le réseau, puis le désérialiser à l'autre bout

Je ne peux pas utiliser tpl ou toute autre bibliothèque.

Est-il possible de faire mieux, je ne suis pas à l'aise avec cela, ou est-ce le mieux que nous puissions faire.

OriginalL'auteur Ankur Chauhan | 2009-10-31