IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Unmarshalling structure complexe


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 35
    Points : 17
    Points
    17
    Par défaut Unmarshalling structure complexe
    Bonjour,
    existe t'il des fonctions pour désérialiser ?
    Je dispose d'un pointeur vers une structure qui a été sérialisée (alignement mémoire + conversion Little ou Big Endian). Je souhaiterais réaliser l'opération inverse en passant, par exemple, en paramètre le type de la structure et un flag Little ou Big Endian.

    Question annexe : existe t'il un opérateur donnant des infos sur la constitution d'une structure de donnée ?

    Merci.

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Il n'y a rien de direct. Il existe par contre des biblitohèques qui t'aident à [dé]sérialiser tes données, comme boost::serialization.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    merci, je vais jeter un coup d'oeil.

  4. #4
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Il n'y a rien de direct. Il existe par contre des biblitohèques qui t'aident à [dé]sérialiser tes données, comme boost::serialization.
    Oui mais boost::serialisation désérialise ce qu'elle a sérialisé uniquement non?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    oui apparemment. De plus, pas de prise en compte de la problèmatique little endian, big endian.

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par poukill Voir le message
    Oui mais boost::serialisation désérialise ce qu'elle a sérialisé uniquement non?
    Oui, effectivement.

    Citation Envoyé par Cédric-29 Voir le message
    De plus, pas de prise en compte de la problèmatique little endian, big endian.
    Qu'entends tu par là ? Si tu choisis un format textuel, elle pourra l'écrire sur une machine big endian, et le relire sur une machnie little endian. Si tu choisis un format binaire, tu auras selon les machines envisagées plein de problèmes au delà du little/big endian, quelle que soit la bibliothèque : Les types qui n'ont pas la même taille, les doubles non représentés de la même manière, le codage des nombre négatifs...

    Dans ce cas, il te faudra spécifier précisément sous quelle forme tu souhaites sérialiser tes données. Je crois que la norme XDR te permettra de faire ça.

    Les fonctionnalités avancées de boost::serialization sont d'un autre ordre. Elles gère plus la richesse de ce que tu veux sérialiser. Elle permet de gérer que dans ta structure, tu as 2 pointeurs vers une même zone mémoire (qui doit donc être sérialisée, mais une seule fois), et un pointeur sur classe de base qui en fait pointe sur une classe dérivée (c'est donc cette dernière qui doit être sérialisée, et recrée à la lecture), et ce récursivement.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    A vrai dire, je cherche à déserialiser des données issues de messages corba (j'ai lancé un autre post dans la section adéquate pour tenter de résoudre le problème à un niveau supérieur) interceptés sur le réseau (je n'ai pas accés à la méthode de sérialisation). Les données ont été sérialisées suivant la Common Data Représentation.
    Ayant extrait les différents entêtes, je sais si le message est codé en Little Endian ou Big Endian (les messages proviennent de systèmes différents). Je dispose également de la définition de la structure à extraire. De plus, une structure de donnée est inclue dans un seul message, il n'y a pas de fragmentation des données.

Discussions similaires

  1. Import XML structure complexe
    Par kenobyalex dans le forum VBA Access
    Réponses: 9
    Dernier message: 08/04/2008, 17h37
  2. Réponses: 4
    Dernier message: 11/02/2008, 18h03
  3. Structures complexes dans une autre structure?
    Par cata2 dans le forum MATLAB
    Réponses: 4
    Dernier message: 19/09/2007, 23h05
  4. [JDK1.3] setUndecorated() au sein de structure complexe
    Par Iván Y. dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/05/2007, 14h30
  5. [langage] structures complexes et affichage
    Par mat21 dans le forum Langage
    Réponses: 5
    Dernier message: 18/02/2004, 15h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo