Serialisation ou Marshalling

Signaler
Messages postés
1
Date d'inscription
dimanche 25 mars 2007
Statut
Membre
Dernière intervention
25 mars 2007
-
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
-
Bonjour,

Je doit réaliser un projet en C dans lequel je dois marshaller les arguments se situant dans le paquet avant de l'envoyer au server.
Je dois convertir mes arguments qui peuvent etre des entiers ou des characteres en une sequence de byte.
Je pensais convertir les string en decimal d'abord grace au code ascii, puis les convertir en binaire.
Mon probleme est surtout comment je peut ensuite inserer ces nombres binaire ds mon type "byte"
tyedef unsigned char byte ;

car toutes mes autres fonction utilise ensuite des sequence de byte ou tableau de byte ( byte * ou byte[1024] )
Si qqn a deja fait de la serialisation ou a une idee de par ou commencer :)

merci de votre aide

1 réponse

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
21
Le plus simple est de passer par un fichier binaire (write et read)

OU

avec API (Marshalling entre 2 process) :
IStream
ISequentialStream::Read
ISequentialStream::Write

OU

de tout faire à la main :
pour des caracteres c'est facile de faire une suite de byte et pour les entiers : int = 4 octets, donc



int laDonnee = 0xff00ff01;
BYTE *ptr = (BYTE*)(int*)&laDonnee;
BYTE unInt[4];



unInt[0] = *ptr;
unInt[1] = *(ptr+1);
unInt[2] = *(ptr+2);
unInt[3] = *(ptr+3);